/** * Gets the full path to the ad slot * * @since 1.0.1 * * @return string */ public function path() { if (!$this->post instanceof WP_Post) { return ''; } WP_DFP::inc('wp-dfp-settings.php'); return ltrim(WP_DFP_Settings::get('network_code', '') . '/' . $this->slot(), '/'); }
/** * Generates the targeting for the current content being displayed * * @since 1.0 * * @return array */ public static function get_targeting() { if (is_array(self::$targeting)) { return; } // Init targeting array self::$targeting = array(); // Include WP_DFP_Settings class WP_DFP::inc('wp-dfp-settings.php'); // Helper function for converting all array values to strings $to_string = create_function('$v', 'return is_array( $v ) ? $v : (string) $v;'); // Define targeting rules for home/front page if (is_front_page() || is_home()) { self::$targeting['post_name'] = 'home'; self::$targeting['post_title'] = 'Home'; self::$targeting['post_id'] = 0; self::$targeting['post_type'] = ''; } elseif (is_singular()) { global $post; $tag_terms = get_the_terms($post->ID, 'post_tag'); if (is_array($tag_terms)) { self::$targeting['tag'] = wp_list_pluck($tag_terms, 'slug'); } $category_terms = get_the_terms($post->ID, 'category'); if (is_array($category_terms)) { self::$targeting['category'] = array_map($to_string, wp_list_pluck($category_terms, 'slug')); } self::$targeting['post_name'] = $post->post_name; self::$targeting['post_title'] = $post->post_title; self::$targeting['post_id'] = $post->ID; self::$targeting['post_type'] = $post->post_type; } elseif (is_category()) { self::$targeting['taxonomy'] = 'category'; self::$targeting['term'] = get_queried_object()->slug; } elseif (is_tag()) { self::$targeting['taxonomy'] = 'tag'; self::$targeting['term'] = get_queried_object()->slug; } elseif (is_tax()) { self::$taxonomy = get_queried_object()->slug; self::$targeting['taxonomy'] = $taxonomy; self::$targeting['term'] = get_query_var($taxonomy); } elseif (is_search()) { self::$targeting['search_term'] = get_query_var('s'); } /** * Filter the targeting arguments for the current content being displayed * * @since 1.0 * * @param array $targeting An array of targeting arguments. */ self::$targeting = apply_filters('wp_dfp_targeting', self::$targeting); // Define slots $all_slots = WP_DFP::get_slots(); $slots = array(); foreach ($all_slots as $slot) { $slot = wp_dfp_ad_slot($slot); $slots[$slot->slot()] = $slot->sizes(); unset($slot); // prevent possible memory spike } // Get network code $network_code = WP_DFP_Settings::get('network_code'); // Set message defaults $messages = array('noNetworkCode' => null); /* If current user can manage options and a network code is not defined then display an message in each in-page ad slot */ if (empty($network_code) && current_user_can('manage_options')) { $messages['noNetworkCode'] = '<div class="wp-dfp-ad-unit-error">' . sprintf(__('WP_DFP: You must supply your DFP network code in the <a target="_blank" href="%s">WP DFP settings</a> screen.', 'wp-dfp'), wp_dfp_settings_url()) . '</div>'; } wp_enqueue_script('wp-dfp'); wp_localize_script('wp-dfp', 'wpdfp', array('network' => $network_code, 'targeting' => array_map($to_string, self::$targeting), 'slots' => $slots, 'messages' => $messages)); }
/** * Generates the settings form markup * * @since 1.0 * @access protected */ protected static function form() { self::$form = array('wp_dfp_nonce' => array('#type' => 'markup', '#markup' => wp_nonce_field(self::NONCE_ACTION, self::NONCE_NAME, true, false)), 'network_code' => array('#type' => 'text', '#name' => self::input_name('network_code'), '#label' => __('Network Code', 'wp-dfp'), '#description' => __('Your network code as found in your DFP account.', 'wp-dfp')), 'slot_prefix' => array('#type' => 'text', '#name' => self::input_name('slot_prefix'), '#label' => __('Slot Prefix', 'wp-dfp'), '#description' => __('If you would like, you can specifiy a prefix that will be added to every slot size', 'wp-dfp')), 'submit' => array('#type' => 'markup', '#markup' => get_submit_button())); }
/** * Displays any pertinent admin notices * * @since 1.0 * @action admin_notices */ public static function display_admin_notices() { $network_code = WP_DFP_Settings::get('network_code'); if (!empty($network_code) || get_current_screen()->id == 'wp_dfp_ad_slot_page_wp_dfp_settings') { return; } if (current_user_can('manage_options')) { $notice = sprintf(__('WP_DFP: You have not specified your DFP network code. You can set your network code by going to the <a href="%s">WP DFP settings page</a>', 'wp-dfp'), wp_dfp_settings_url()); } else { $notice = __('WP_DFP: A DFP network code is required for WP DFP to function correctly. Please have an admin set a network code ASAP.', 'wp-dfp'); } echo '<div class="error"><p>' . $notice . '</p></div>'; }