includes(); $this->init_hooks(); } /** * Include required core files used in admin and on the frontend. */ private function includes() { require_once ADFUSION_PLUGIN_DIR . 'includes/adfusion-dedupe.php'; require_once ADFUSION_PLUGIN_DIR . 'includes/class-adfusion.php'; require_once ADFUSION_PLUGIN_DIR . 'includes/class-adfusion-ads-txt.php'; require_once ADFUSION_PLUGIN_DIR . 'includes/adfusion-abilities.php'; require_once ADFUSION_PLUGIN_DIR . 'includes/adfusion-kses.php'; if ( is_admin() ) { require_once ADFUSION_PLUGIN_DIR . 'admin/class-adfusion-admin.php'; } require_once ADFUSION_PLUGIN_DIR . 'public/class-adfusion-public.php'; } /** * Hook into actions and filters. */ private function init_hooks() { // Fire init hook after plugins_loaded priority 10 so Premium/extensions can hook in first. add_action( 'plugins_loaded', array( $this, 'fire_init' ), 20 ); } /** * Fire adfusion_init for Premium and extensions to hook into. */ public function fire_init() { do_action( 'adfusion_init' ); } } /** * Returns the main instance of AdFusion to prevent the need to use globals. */ function adfusion_run() { return AdFusion::get_instance(); } /** * Grant adfusion_ad capabilities to administrator. */ function adfusion_grant_admin_caps() { $admin_role = get_role( 'administrator' ); if ( ! $admin_role ) { return; } $caps = array( 'edit_adfusion_ad', 'read_adfusion_ad', 'delete_adfusion_ad', 'edit_adfusion_ads', 'edit_others_adfusion_ads', 'publish_adfusion_ads', 'read_private_adfusion_ads', 'delete_adfusion_ads', 'delete_others_adfusion_ads', 'edit_published_adfusion_ads', 'delete_published_adfusion_ads', ); foreach ( $caps as $cap ) { $admin_role->add_cap( $cap ); } } /** * Run on core plugin activation. */ function adfusion_activation() { adfusion_grant_admin_caps(); } register_activation_hook( __FILE__, 'adfusion_activation' ); /** * Ensure administrator has adfusion caps on every admin load. * Restores caps if lost (theme change, other plugin, etc.). */ add_action( 'admin_init', 'adfusion_grant_admin_caps' ); /** * Invalidate group transients when an ad is saved. * * @param int $post_id Post ID. */ function adfusion_invalidate_group_transients( $post_id ) { if ( get_post_type( $post_id ) !== 'adfusion_ad' ) { return; } $terms = get_terms( array( 'taxonomy' => 'adfusion_group', 'hide_empty' => false, 'fields' => 'slugs', ) ); if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) { foreach ( $terms as $slug ) { delete_transient( ADFUSION_PLUGIN_SLUG . '_group_' . $slug ); } } } add_action( 'save_post_adfusion_ad', 'adfusion_invalidate_group_transients' ); add_action( 'created_adfusion_group', 'adfusion_invalidate_ad_groups_transient' ); add_action( 'edited_adfusion_group', 'adfusion_invalidate_ad_groups_transient' ); add_action( 'delete_adfusion_group', 'adfusion_invalidate_ad_groups_transient' ); /** * Invalidate ad groups list transient when groups change. */ function adfusion_invalidate_ad_groups_transient() { delete_transient( ADFUSION_PLUGIN_SLUG . '_ad_groups' ); } // Boot the plugin. adfusion_run();