PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.5.1
Independent Analytics – WordPress Analytics Plugin v2.5.1
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
67 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']);
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) : array
31 {
32 $columns[self::$meta_key] = \__('Views', 'independent-analytics') . ' <span class="iawp-hidden-label"><span class="hide">(</span>Independent Analytics<span class="hide">)</span></span>';
33 return $columns;
34 }
35 public static function echo_cell_content($column_id, $post_id) : void
36 {
37 if ($column_id === self::$meta_key) {
38 $total_views = \intval(\get_post_meta($post_id, self::$meta_key, \true));
39 echo Number_Formatter::decimal($total_views);
40 }
41 }
42 public static function enable_sorting(array $columns) : array
43 {
44 $columns[self::$meta_key] = [self::$meta_key, 'DESC'];
45 return $columns;
46 }
47 public static function configure_sorting($query) : void
48 {
49 // Limit to admin menus
50 if (!\is_admin() || !$query->is_main_query() || \wp_doing_ajax() || \wp_doing_cron()) {
51 return;
52 }
53 $order_by = $query->get('orderby');
54 if ($order_by === self::$meta_key) {
55 $meta_query = ['relation' => 'OR', ['key' => self::$meta_key, 'compare' => 'NOT EXISTS'], ['key' => self::$meta_key]];
56 $query->set('meta_query', $meta_query);
57 $query->set('orderby', 'meta_value_num');
58 }
59 }
60 private static function post_type_slugs() : array
61 {
62 $built_in_post_type_slugs = ['post', 'page'];
63 $post_type_slugs = \get_post_types(['public' => \true, '_builtin' => \false]);
64 return \array_merge($built_in_post_type_slugs, $post_type_slugs);
65 }
66 }
67