PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 15.2.1
Jetpack – WP Security, Backup, Speed, & Growth v15.2.1
12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / modules / infinite-scroll.php
jetpack / modules Last commit date
carousel 9 months ago comment-likes 1 year ago comments 9 months ago custom-post-types 1 year ago external-media 1 year ago google-fonts 11 months ago gravatar 6 years ago infinite-scroll 9 months ago likes 9 months ago markdown 1 year ago memberships 11 months ago photon-cdn 11 months ago plugin-search 1 year ago post-by-email 1 year ago related-posts 10 months ago scan 9 months ago seo-tools 1 year ago sharedaddy 9 months ago shortcodes 9 months ago simple-payments 1 year ago site-icon 11 months ago sitemaps 10 months ago stats 1 year ago subscriptions 9 months ago theme-tools 9 months ago tiled-gallery 1 year ago verification-tools 1 year ago videopress 11 months ago widget-visibility 11 months ago widgets 9 months ago woocommerce-analytics 9 months ago wordads 9 months ago wpcom-tos 1 year ago account-protection.php 1 year ago blaze.php 1 year ago blocks.php 1 year ago carousel.php 1 year ago comment-likes.php 10 months ago comments.php 1 year ago contact-form.php 1 year ago copy-post.php 1 year ago custom-content-types.php 1 year ago google-fonts.php 1 year ago gravatar-hovercards.php 1 year ago infinite-scroll.php 1 year ago json-api.php 1 year ago latex.php 1 year ago likes.php 9 months ago markdown.php 1 year ago module-extras.php 1 year ago module-headings.php 1 year ago module-info.php 1 year ago monitor.php 1 year ago notes.php 1 year ago photon-cdn.php 10 months ago photon.php 1 year ago plugin-search.php 1 year ago post-by-email.php 1 year ago post-list.php 1 year ago protect.php 1 year ago publicize.php 1 year ago related-posts.php 1 year ago search.php 1 year ago seo-tools.php 1 year ago sharedaddy.php 1 year ago shortcodes.php 1 year ago shortlinks.php 11 months ago simple-payments.php 1 year ago sitemaps.php 1 year ago sso.php 1 year ago stats.php 10 months ago subscriptions.php 11 months ago theme-tools.php 1 year ago tiled-gallery.php 1 year ago vaultpress.php 1 year ago verification-tools.php 1 year ago videopress.php 1 year ago waf.php 1 year ago widget-visibility.php 1 year ago widgets.php 1 year ago woocommerce-analytics.php 1 year ago wordads.php 1 year ago wpgroho.js 1 year ago
infinite-scroll.php
249 lines
1 <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2 /**
3 * Module Name: Infinite Scroll
4 * Module Description: Automatically load new posts as visitors scroll down your site.
5 * Sort Order: 26
6 * First Introduced: 2.0
7 * Requires Connection: No
8 * Auto Activate: No
9 * Module Tags: Appearance
10 * Feature: Appearance
11 * Additional Search Queries: scroll, infinite, infinite scroll
12 */
13
14 use Automattic\Jetpack\Current_Plan as Jetpack_Plan;
15 use Automattic\Jetpack\Stats\Options as Stats_Options;
16
17 if ( ! defined( 'ABSPATH' ) ) {
18 exit( 0 );
19 }
20
21 /**
22 * Jetpack-specific elements of Infinite Scroll
23 */
24 class Jetpack_Infinite_Scroll_Extras {
25 /**
26 * Class variable singleton.
27 *
28 * @var Jetpack_Infinite_Scroll_Extras
29 */
30 private static $instance = null;
31
32 /**
33 * Option names.
34 *
35 * @var string
36 */
37 private $option_name_google_analytics = 'infinite_scroll_google_analytics';
38
39 /**
40 * Singleton implementation
41 *
42 * @return object
43 */
44 public static function instance() {
45 if ( ! self::$instance instanceof Jetpack_Infinite_Scroll_Extras ) {
46 self::$instance = new Jetpack_Infinite_Scroll_Extras();
47 }
48
49 return self::$instance;
50 }
51
52 /**
53 * Register actions and filters
54 *
55 * @uses add_action, add_filter
56 */
57 private function __construct() {
58 add_action( 'jetpack_modules_loaded', array( $this, 'action_jetpack_modules_loaded' ) );
59
60 add_action( 'admin_init', array( $this, 'action_admin_init' ), 11 );
61
62 add_action( 'after_setup_theme', array( $this, 'action_after_setup_theme' ), 5 );
63
64 add_filter( 'infinite_scroll_js_settings', array( $this, 'filter_infinite_scroll_js_settings' ) );
65
66 add_action( 'wp_enqueue_scripts', array( $this, 'action_wp_enqueue_scripts' ) );
67 }
68
69 /**
70 * Enable "Configure" button on module card
71 *
72 * @uses Jetpack::enable_module_configurable
73 * @action jetpack_modules_loaded
74 */
75 public function action_jetpack_modules_loaded() {
76 Jetpack::enable_module_configurable( __FILE__ );
77 }
78
79 /**
80 * Register Google Analytics setting
81 *
82 * @uses add_settings_field, __, register_setting
83 * @action admin_init
84 */
85 public function action_admin_init() {
86 if ( ! Jetpack_Plan::supports( 'google-analytics' ) ) {
87 return;
88 }
89
90 add_settings_field( $this->option_name_google_analytics, '<span id="infinite-scroll-google-analytics">' . __( 'Use Google Analytics with Infinite Scroll', 'jetpack' ) . '</span>', array( $this, 'setting_google_analytics' ), 'reading' );
91 register_setting( 'reading', $this->option_name_google_analytics, array( $this, 'sanitize_boolean_value' ) );
92 }
93
94 /**
95 * Render Google Analytics option
96 *
97 * @uses checked, get_option, __
98 */
99 public function setting_google_analytics() {
100 echo '<label><input name="infinite_scroll_google_analytics" type="checkbox" value="1" ' . checked( true, (bool) get_option( $this->option_name_google_analytics, false ), false ) . ' /> ' . esc_html__( 'Track each scroll load (7 posts by default) as a page view in Google Analytics', 'jetpack' ) . '</label>';
101 echo '<p class="description">' . esc_html__( 'Check the box above to record each new set of posts loaded via Infinite Scroll as a page view in Google Analytics.', 'jetpack' ) . '</p>';
102 }
103
104 /**
105 * Sanitize value as a boolean
106 *
107 * @param mixed $value - the value we're sanitizing.
108 * @return bool
109 */
110 public function sanitize_boolean_value( $value ) {
111 return (bool) $value;
112 }
113
114 /**
115 * Load theme's infinite scroll annotation file, if present in the IS plugin.
116 * The `setup_theme` action is used because the annotation files should be using `after_setup_theme` to register support for IS.
117 *
118 * As released in Jetpack 2.0, a child theme's parent wasn't checked for in the plugin's bundled support, hence the convoluted way the parent is checked for now.
119 *
120 * @uses is_admin, wp_get_theme, apply_filters
121 * @action setup_theme
122 * @return null
123 */
124 public function action_after_setup_theme() {
125 $theme = wp_get_theme();
126
127 if ( ! $theme instanceof WP_Theme && ! is_array( $theme ) ) {
128 return;
129 }
130
131 /** This filter is already documented in modules/infinite-scroll/infinity.php */
132 $customization_file = apply_filters( 'infinite_scroll_customization_file', __DIR__ . "/infinite-scroll/themes/{$theme['Stylesheet']}.php", $theme['Stylesheet'] );
133
134 if ( is_readable( $customization_file ) ) {
135 require_once $customization_file;
136 } elseif ( ! empty( $theme['Template'] ) ) {
137 $customization_file = __DIR__ . "/infinite-scroll/themes/{$theme['Template']}.php";
138
139 if ( is_readable( $customization_file ) ) {
140 require_once $customization_file;
141 }
142 }
143 }
144
145 /**
146 * Modify Infinite Scroll configuration information
147 *
148 * @uses Jetpack::get_active_modules, is_user_logged_in, stats_get_options, Jetpack_Options::get_option, get_option, JETPACK__API_VERSION, JETPACK__VERSION
149 * @filter infinite_scroll_js_settings
150 *
151 * @param array $settings - the settings.
152 * @return array
153 */
154 public function filter_infinite_scroll_js_settings( $settings ) {
155 // Provide WP Stats info for tracking Infinite Scroll loads
156 // Abort if Stats module isn't active
157 if ( in_array( 'stats', Jetpack::get_active_modules(), true ) ) {
158 // Abort if user is logged in but logged-in users shouldn't be tracked.
159 if ( is_user_logged_in() ) {
160 $stats_options = Stats_Options::get_options();
161 $track_loggedin_users = isset( $stats_options['count_roles'] ) ? (bool) $stats_options['count_roles'] : false;
162
163 if ( ! $track_loggedin_users ) {
164 return $settings;
165 }
166 }
167
168 // We made it this far, so gather the data needed to track IS views
169 $settings['stats'] = 'blog=' . Jetpack_Options::get_option( 'id' ) . '&host=' . wp_parse_url( get_option( 'home' ), PHP_URL_HOST ) . '&v=ext&j=' . JETPACK__API_VERSION . ':' . JETPACK__VERSION;
170
171 // Pagetype parameter
172 $settings['stats'] .= '&x_pagetype=infinite';
173 if ( 'click' === $settings['type'] ) {
174 $settings['stats'] .= '-click';
175 }
176
177 $settings['stats'] .= '-jetpack';
178 }
179
180 // Check if Google Analytics tracking is requested.
181 $settings['google_analytics'] = Jetpack_Plan::supports( 'google-analytics' ) && Jetpack_Options::get_option_and_ensure_autoload( $this->option_name_google_analytics, 0 );
182
183 return $settings;
184 }
185
186 /**
187 * Always load certain scripts when IS is enabled, as they can't be loaded after `document.ready` fires, meaning they can't leverage IS's script loader.
188 *
189 * @global $videopress
190 * @uses do_action()
191 * @uses apply_filters()
192 * @uses wp_enqueue_style()
193 * @uses wp_enqueue_script()
194 * @action wp_enqueue_scripts
195 * @return null
196 */
197 public function action_wp_enqueue_scripts() {
198 // Do not load scripts and styles on singular pages and static pages
199 $load_scripts_and_styles = ! ( is_singular() || is_page() );
200 if (
201 /**
202 * Allow plugins to enqueue all Infinite Scroll scripts and styles on singular pages as well.
203 *
204 * @module infinite-scroll
205 *
206 * @since 3.1.0
207 *
208 * @param bool $load_scripts_and_styles Should scripts and styles be loaded on singular pahes and static pages. Default to false.
209 */
210 ! apply_filters( 'jetpack_infinite_scroll_load_scripts_and_styles', $load_scripts_and_styles )
211 ) {
212 return;
213 }
214
215 // VideoPress stand-alone plugin
216 global $videopress;
217 if ( ! empty( $videopress ) && The_Neverending_Home_Page::archive_supports_infinity() && is_a( $videopress, 'VideoPress' ) && method_exists( $videopress, 'enqueue_scripts' ) ) {
218 $videopress->enqueue_scripts();
219 }
220
221 // VideoPress Jetpack module
222 if ( Jetpack::is_module_active( 'videopress' ) ) {
223 wp_enqueue_script( 'videopress' );
224 }
225
226 // Fire the post_gallery action early so Carousel scripts are present.
227 if ( Jetpack::is_module_active( 'carousel' ) ) {
228 /** This filter is already documented in core/wp-includes/media.php */
229 do_action( 'post_gallery', '', '', 0 );
230 }
231
232 // Always enqueue Tiled Gallery scripts when both IS and Tiled Galleries are enabled
233 if ( Jetpack::is_module_active( 'tiled-gallery' ) ) {
234 Jetpack_Tiled_Gallery::default_scripts_and_styles();
235 }
236 }
237 }
238 Jetpack_Infinite_Scroll_Extras::instance();
239
240 /**
241 * Load main IS file
242 */
243 require_once __DIR__ . '/infinite-scroll/infinity.php';
244
245 /**
246 * Remove the IS annotation loading function bundled with the IS plugin in favor of the Jetpack-specific version in Jetpack_Infinite_Scroll_Extras::action_after_setup_theme();
247 */
248 remove_action( 'after_setup_theme', 'the_neverending_home_page_theme_support', 5 );
249