/**
  * Returns the post count for a certain SEO rank
  *
  * @todo Merge/DRY this with the logic virtually the same in WPSEO_Metabox::column_sort_orderby()
  *
  * @param WPSEO_Rank $rank The SEO rank to get the post count for.
  *
  * @return int
  */
 public function get_post_count($rank)
 {
     if (WPSEO_Rank::NO_FOCUS === $rank->get_rank()) {
         $posts = array('meta_query' => array('relation' => 'OR', array('key' => WPSEO_Meta::$meta_prefix . 'focuskw', 'value' => 'needs-a-value-anyway', 'compare' => 'NOT EXISTS')));
     } elseif (WPSEO_Rank::NO_INDEX === $rank->get_rank()) {
         $posts = array('meta_key' => WPSEO_Meta::$meta_prefix . 'meta-robots-noindex', 'meta_value' => '1', 'compare' => '=');
     } else {
         $posts = array('meta_key' => WPSEO_Meta::$meta_prefix . 'linkdex', 'meta_value' => array($rank->get_starting_score(), $rank->get_end_score()), 'meta_compare' => 'BETWEEN', 'meta_type' => 'NUMERIC');
     }
     $posts['fields'] = 'ids';
     $posts['post_status'] = 'publish';
     if (current_user_can('edit_others_posts') === false) {
         $posts['author'] = get_current_user_id();
     }
     $posts = new WP_Query($posts);
     return $posts->found_posts;
 }
Exemplo n.º 2
0
 /**
  * Modify the query based on the seo_filter variable in $_GET
  *
  * @param array $vars Query variables.
  *
  * @return array
  */
 public function column_sort_orderby($vars)
 {
     if ($seo_filter = filter_input(INPUT_GET, 'seo_filter')) {
         $rank = new WPSEO_Rank($seo_filter);
         if (WPSEO_Rank::NO_FOCUS === $seo_filter || WPSEO_Rank::NO_INDEX === $seo_filter) {
             $vars = $this->filter_other($vars, $seo_filter);
         } else {
             $vars = array_merge($vars, $this->filter_scored($rank->get_starting_score(), $rank->get_end_score()));
             add_filter('posts_where', array($this, 'seo_score_posts_where'));
         }
     }
     if ($seo_kw_filter = filter_input(INPUT_GET, 'seo_kw_filter')) {
         $vars = array_merge($vars, array('post_type' => get_query_var('post_type', 'post'), 'meta_key' => WPSEO_Meta::$meta_prefix . 'focuskw', 'meta_value' => sanitize_text_field($seo_kw_filter)));
     }
     if (isset($vars['orderby'])) {
         $vars = array_merge($vars, $this->filter_order_by($vars['orderby']));
     }
     return $vars;
 }