PluginProbe ʕ •ᴥ•ʔ
Post Views Counter / 1.1.4
Post Views Counter v1.1.4
1.7.13 1.7.12 1.7.11 trunk 1.0.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.2.0 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3 1.3.1 1.3.10 1.3.11 1.3.12 1.3.13 1.3.2 1.3.2.1 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.7.0 1.7.1 1.7.10 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 1.7.7 1.7.8 1.7.9
post-views-counter / includes / frontend.php
post-views-counter / includes Last commit date
columns.php 10 years ago counter.php 10 years ago cron.php 10 years ago frontend.php 10 years ago functions.php 10 years ago query.php 10 years ago settings.php 10 years ago update.php 10 years ago widgets.php 10 years ago
frontend.php
135 lines
1 <?php
2 // exit if accessed directly
3 if ( ! defined( 'ABSPATH' ) )
4 exit;
5
6 /**
7 * Post_Views_Counter_Frontend class.
8 */
9 class Post_Views_Counter_Frontend {
10
11 public function __construct() {
12 // actions
13 add_action( 'after_setup_theme', array( $this, 'register_shortcode' ) );
14 add_action( 'wp_enqueue_scripts', array( $this, 'frontend_scripts_styles' ) );
15
16 // filters
17 add_filter( 'the_content', array( $this, 'add_post_views_count' ) );
18 add_filter( 'the_excerpt', array( $this, 'remove_post_views_count' ) );
19 }
20
21 /**
22 * Register post-views shortcode function.
23 */
24 public function register_shortcode() {
25 add_shortcode( 'post-views', array( $this, 'post_views_shortcode' ) );
26 }
27
28 /**
29 * Post views shortcode function.
30 *
31 * @param array $args
32 * @return mixed
33 */
34 public function post_views_shortcode( $args ) {
35 $defaults = array(
36 'id' => get_the_ID()
37 );
38
39 $args = shortcode_atts( $defaults, $args );
40
41 return pvc_post_views( $args['id'], false );
42 }
43
44 /**
45 * Add post views counter to content.
46 *
47 * @param mixed $content
48 * @return mixed
49 */
50 public function add_post_views_count( $content ) {
51 if ( is_singular() && in_array( get_post_type(), Post_Views_Counter()->options['display']['post_types_display'], true ) ) {
52
53 // get groups to check it faster
54 $groups = Post_Views_Counter()->options['display']['restrict_display']['groups'];
55
56 // whether to display views
57 if ( is_user_logged_in() ) {
58 // exclude logged in users?
59 if ( in_array( 'users', $groups, true ) )
60 return $content;
61 // exclude specific roles?
62 elseif ( in_array( 'roles', $groups, true ) && Post_Views_Counter()->_counter->is_user_roles_excluded( Post_Views_Counter()->options['display']['restrict_display']['roles'] ) )
63 return $content;
64 }
65 // exclude guests?
66 elseif ( in_array( 'guests', $groups, true ) )
67 return $content;
68
69 switch ( Post_Views_Counter()->options['display']['position'] ) {
70 case 'after':
71 return $content . '[post-views]';
72
73 case 'before':
74 return '[post-views]' . $content;
75
76 default:
77 case 'manual':
78 return $content;
79 }
80 }
81
82 return $content;
83 }
84
85 /**
86 * Remove post views shortcode from excerpt.
87 *
88 * @param mixed $excerpt
89 * @return mixed
90 */
91 public function remove_post_views_count( $excerpt ) {
92 remove_shortcode( 'post-views' );
93 $excerpt = preg_replace( '/\[post-views[^\]]*\]/', '', $excerpt );
94 return $excerpt;
95 }
96
97 /**
98 * Enqueue frontend scripts and styles.
99 */
100 public function frontend_scripts_styles() {
101 $post_types = Post_Views_Counter()->options['display']['post_types_display'];
102
103 // load dashicons
104 wp_enqueue_style( 'dashicons' );
105
106 // load style
107 wp_enqueue_style( 'post-views-counter-frontend', POST_VIEWS_COUNTER_URL . '/css/frontend.css' );
108
109 if ( Post_Views_Counter()->options['general']['counter_mode'] === 'js' ) {
110 $post_types = Post_Views_Counter()->options['general']['post_types_count'];
111
112 // whether to count this post type or not
113 if ( empty( $post_types ) || ! is_singular( $post_types ) )
114 return;
115
116 wp_register_script(
117 'post-views-counter-frontend', POST_VIEWS_COUNTER_URL . '/js/frontend.js', array( 'jquery' )
118 );
119
120 wp_enqueue_script( 'post-views-counter-frontend' );
121
122 wp_localize_script(
123 'post-views-counter-frontend',
124 'pvcArgsFrontend',
125 array(
126 'ajaxURL' => admin_url( 'admin-ajax.php' ),
127 'postID' => get_the_ID(),
128 'nonce' => wp_create_nonce( 'pvc-check-post' ),
129 'postType' => get_post_type()
130 )
131 );
132 }
133 }
134 }
135