-
Notifications
You must be signed in to change notification settings - Fork 879
/
class-wpseo-statistics.php
62 lines (56 loc) · 1.41 KB
/
class-wpseo-statistics.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
/**
* WPSEO plugin file.
*
* @package WPSEO\Internals
*/
/**
* Class that generates interesting statistics about things.
*/
class WPSEO_Statistics {
/**
* 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 ( $rank->get_rank() === WPSEO_Rank::NO_FOCUS ) {
$posts = [
'meta_query' => [
'relation' => 'OR',
[
'key' => WPSEO_Meta::$meta_prefix . 'focuskw',
'value' => 'needs-a-value-anyway',
'compare' => 'NOT EXISTS',
],
],
];
}
elseif ( $rank->get_rank() === WPSEO_Rank::NO_INDEX ) {
$posts = [
'meta_key' => WPSEO_Meta::$meta_prefix . 'meta-robots-noindex',
'meta_value' => '1',
'compare' => '=',
];
}
else {
$posts = [
'meta_key' => WPSEO_Meta::$meta_prefix . 'linkdex',
'meta_value' => [ $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 (int) $posts->found_posts;
}
}