PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.8.4
Independent Analytics – WordPress Analytics Plugin v2.8.4
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / IAWP / Custom_WordPress_Columns / Views_Column.php
independent-analytics / IAWP / Custom_WordPress_Columns Last commit date
Views_Column.php 2 years ago
Views_Column.php
72 lines
1 <?php
2
3 namespace IAWP\Custom_WordPress_Columns;
4
5 use IAWP\Utils\Number_Formatter;
6 /** @internal */
7 class Views_Column
8 {
9 public static $meta_key = 'iawp_total_views';
10 public static function initialize() : void
11 {
12 if (\get_option('iawp_disable_views_column', 0) === '1') {
13 return;
14 }
15 \add_action('init', [self::class, 'register_custom_post_meta']);
16 \add_filter('manage_posts_columns', [self::class, 'set_column_header'], 10, 2);
17 \add_action('manage_posts_custom_column', [self::class, 'echo_cell_content'], 10, 2);
18 \add_action('pre_get_posts', [self::class, 'configure_sorting']);
19 \add_filter('manage_pages_columns', [self::class, 'set_column_header']);
20 \add_action('manage_pages_custom_column', [self::class, 'echo_cell_content'], 10, 2);
21 \add_action('pre_get_pages', [self::class, 'configure_sorting']);
22 }
23 public static function register_custom_post_meta() : void
24 {
25 foreach (self::post_type_slugs() as $post_type_slug) {
26 \register_post_meta($post_type_slug, self::$meta_key, ['type' => 'integer', 'single' => \true, 'default' => 0, 'show_in_rest' => \true]);
27 \add_filter("manage_edit-{$post_type_slug}_sortable_columns", [self::class, 'enable_sorting']);
28 }
29 }
30 public static function set_column_header(array $columns, string $post_type = null) : array
31 {
32 // manage_pages_columns doesn't set the $post_type argument, so checking is_null() works for it
33 if (\is_null($post_type) || \in_array($post_type, self::post_type_slugs())) {
34 $columns[self::$meta_key] = \__('Views', 'independent-analytics') . ' <span class="iawp-hidden-label"><span class="hide">(</span>Independent Analytics<span class="hide">)</span></span>';
35 }
36 return $columns;
37 }
38 public static function echo_cell_content($column_id, $post_id) : void
39 {
40 if ($column_id === self::$meta_key) {
41 $total_views = \intval(\get_post_meta($post_id, self::$meta_key, \true));
42 echo Number_Formatter::decimal($total_views);
43 }
44 }
45 public static function enable_sorting(array $columns) : array
46 {
47 $columns[self::$meta_key] = [self::$meta_key, 'DESC'];
48 return $columns;
49 }
50 public static function configure_sorting($query) : void
51 {
52 // Limit to admin menus
53 if (!\is_admin() || !$query->is_main_query() || \wp_doing_ajax() || \wp_doing_cron()) {
54 return;
55 }
56 $order_by = $query->get('orderby');
57 if ($order_by === self::$meta_key) {
58 $meta_query = ['relation' => 'OR', ['key' => self::$meta_key, 'compare' => 'NOT EXISTS'], ['key' => self::$meta_key]];
59 $query->set('meta_query', $meta_query);
60 $query->set('orderby', 'meta_value_num');
61 }
62 }
63 private static function post_type_slugs() : array
64 {
65 $built_in_post_type_slugs = ['post', 'page'];
66 $post_type_slugs = \get_post_types(['public' => \true, '_builtin' => \false]);
67 $slugs = \array_merge($built_in_post_type_slugs, $post_type_slugs);
68 $disallowed = ['elementor_library', 'e-landing-page'];
69 return \array_diff($slugs, $disallowed);
70 }
71 }
72