Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
80.00% covered (warning)
80.00%
12 / 15
66.67% covered (warning)
66.67%
2 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
Jetpack_RelatedPosts_Module
80.00% covered (warning)
80.00%
8 / 10
66.67% covered (warning)
66.67%
2 / 3
7.39
0.00% covered (danger)
0.00%
0 / 1
 instance
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
2
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 action_on_load
66.67% covered (warning)
66.67%
4 / 6
0.00% covered (danger)
0.00%
0 / 1
4.59
1<?php //phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2/**
3 * Module Name: Related Posts
4 * Module Description: Automatically display related articles to keep visitors reading longer.
5 * First Introduced: 2.9
6 * Sort Order: 29
7 * Recommendation Order: 9
8 * Requires Connection: Yes
9 * Auto Activate: No
10 * Module Tags: Recommended
11 * Feature: Engagement
12 * // phpcs:ignore WordPress.WP.CapitalPDangit.MisspelledInComment
13 * Additional Search Queries: related, jetpack related posts, related posts for wordpress, related posts, popular posts, popular, related content, related post, contextual, context, contextual related posts, related articles, similar posts, easy related posts, related page, simple related posts, free related posts, related thumbnails, similar, engagement, yet another related posts plugin, creator
14 *
15 * @package automattic/jetpack
16 */
17
18if ( ! defined( 'ABSPATH' ) ) {
19    exit( 0 );
20}
21
22/**
23 * Class Jetpack_RelatedPosts_Module
24 *
25 * @phan-constructor-used-for-side-effects
26 */
27class Jetpack_RelatedPosts_Module {
28    /**
29     * Class variables
30     *
31     * @var Jetpack_RelatedPosts_Module
32     */
33    private static $instance = null;
34
35    /**
36     * Singleton implementation
37     *
38     * @return object
39     */
40    public static function instance() {
41        if ( ! is_a( self::$instance, 'Jetpack_RelatedPosts_Module' ) ) {
42            self::$instance = new Jetpack_RelatedPosts_Module();
43        }
44
45        return self::$instance;
46    }
47
48    /**
49     * Register actions and filters
50     *
51     * @uses add_action, add_filter
52     */
53    private function __construct() {
54        add_action( 'jetpack_module_loaded_related-posts', array( $this, 'action_on_load' ) );
55    }
56
57    /**
58     * This action triggers if the module is in an active state, load related posts and options.
59     *
60     * @uses Jetpack_RelatedPosts::init, is_admin, Jetpack::enable_module_configurable, Jetpack_Sync::sync_posts
61     */
62    public function action_on_load() {
63        require_once __DIR__ . '/related-posts/jetpack-related-posts.php';
64        Jetpack_RelatedPosts::init();
65
66        if ( is_admin() ) {
67            Jetpack::enable_module_configurable( __FILE__ );
68        }
69
70        // Load Customizer controls.
71        if ( class_exists( WP_Customize_Manager::class ) && class_exists( WP_Customize_Control::class ) ) {
72            require_once __DIR__ . '/related-posts/class.related-posts-customize.php';
73        }
74    }
75}
76
77// Do it.
78Jetpack_RelatedPosts_Module::instance();
79
80require_once __DIR__ . '/related-posts/abilities/class-related-posts-abilities.php';
81\Automattic\Jetpack\Plugin\Abilities\Related_Posts_Abilities::init();