Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 55
0.00% covered (danger)
0.00%
0 / 4
CRAP
n/a
0 / 0
jetpack_content_options_init
0.00% covered (danger)
0.00%
0 / 10
0.00% covered (danger)
0.00%
0 / 1
20
jetpack_featured_images_get_settings
0.00% covered (danger)
0.00%
0 / 25
0.00% covered (danger)
0.00%
0 / 1
306
jetpack_featured_images_should_load
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
90
jetpack_featured_images_fallback_should_load
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2/**
3 * Jetpack Compatibility File
4 * See: https://jetpack.com/
5 *
6 * @package automattic/jetpack-classic-theme-helper
7 */
8
9if ( ! defined( 'ABSPATH' ) ) {
10    exit( 0 );
11}
12
13/**
14 * Content Options.
15 *
16 * This feature will only be activated for themes that declare their support.
17 * This can be done by adding code similar to the following during the
18 * 'after_setup_theme' action:
19 *
20    add_theme_support( 'jetpack-content-options', array(
21        'blog-display'       => 'content', // the default setting of the theme: 'content', 'excerpt' or array( 'content', 'excerpt' ) for themes mixing both display.
22        'author-bio'         => true, // display or not the author bio: true or false.
23        'author-bio-default' => false, // the default setting of the author bio, if it's being displayed or not: true or false (only required if false).
24        'avatar-default'     => true, // display or not the default avatar for the author bio: true or false.
25        'masonry'            => '.site-main', // a CSS selector matching the elements that triggers a masonry refresh if the theme is using a masonry layout.
26        'post-details'       => array(
27            'stylesheet'        => 'themeslug-style', // name of the theme's stylesheet.
28            'date'              => '.posted-on', // a CSS selector matching the elements that display the post date.
29            'categories'        => '.cat-links', // a CSS selector matching the elements that display the post categories.
30            'tags'              => '.tags-links', // a CSS selector matching the elements that display the post tags.
31            'author'            => '.byline', // a CSS selector matching the elements that display the post author.
32            'comment'           => '.comments-link', // a CSS selector matching the elements that display the comment link.
33        ),
34        'featured-images'    => array(
35            'archive'           => true, // enable or not the featured image check for archive pages: true or false.
36            'archive-default'   => false, // the default setting of the featured image on archive pages, if it's being displayed or not: true or false (only required if false).
37            'post'              => true, // enable or not the featured image check for single posts: true or false.
38            'post-default'      => false, // the default setting of the featured image on single posts, if it's being displayed or not: true or false (only required if false).
39            'page'              => true, // enable or not the featured image check for single pages: true or false.
40            'page-default'      => false, // the default setting of the featured image on single pages, if it's being displayed or not: true or false (only required if false).
41            'portfolio'         => true, // enable or not the featured image check for single projects: true or false.
42            'portfolio-default' => false, // the default setting of the featured image on single projects, if it's being displayed or not: true or false (only required if false).
43            'fallback'          => true, // enable or not the featured image fallback: true or false.
44            'fallback-default'  => true, // the default setting for featured image fallbacks: true or false (only required if false)
45        ),
46    ) );
47 */
48
49if ( ! function_exists( 'jetpack_content_options_init' ) ) {
50
51    /**
52     * Activate the Content Options plugin.
53     *
54     * @uses current_theme_supports()
55     */
56    function jetpack_content_options_init() {
57        // If the theme doesn't support 'jetpack-content-options', don't continue.
58        if ( ! current_theme_supports( 'jetpack-content-options' ) ) {
59            return;
60        }
61
62        // Load the Customizer options.
63        require __DIR__ . '/content-options/customizer.php';
64
65        // Load Blog Display function.
66        require __DIR__ . '/content-options/blog-display.php';
67
68        // Load Author Bio function.
69        require __DIR__ . '/content-options/author-bio.php';
70
71        // Load Post Details function.
72        require __DIR__ . '/content-options/post-details.php';
73
74        // Load Featured Images function.
75        if ( jetpack_featured_images_should_load() ) {
76            require __DIR__ . '/content-options/featured-images.php';
77        }
78
79        // Load Featured Images Fallback function.
80        if ( jetpack_featured_images_fallback_should_load() ) {
81            require __DIR__ . '/content-options/featured-images-fallback.php';
82        }
83    }
84    add_action( 'init', 'jetpack_content_options_init' );
85
86}
87
88if ( ! function_exists( 'jetpack_featured_images_get_settings' ) ) {
89
90    /**
91     * Get featured images settings using the jetpack-content-options theme support.
92     */
93    function jetpack_featured_images_get_settings() {
94        $options = get_theme_support( 'jetpack-content-options' );
95
96        $featured_images = ( ! empty( $options[0]['featured-images'] ) ) ? $options[0]['featured-images'] : null;
97
98        $settings = array(
99            'archive'           => ( ! empty( $featured_images['archive'] ) ) ? $featured_images['archive'] : null,
100            'post'              => ( ! empty( $featured_images['post'] ) ) ? $featured_images['post'] : null,
101            'page'              => ( ! empty( $featured_images['page'] ) ) ? $featured_images['page'] : null,
102            'portfolio'         => ( ! empty( $featured_images['portfolio'] ) ) ? $featured_images['portfolio'] : null,
103            'archive-default'   => ( isset( $featured_images['archive-default'] ) && false === $featured_images['archive-default'] ) ? '' : 1,
104            'post-default'      => ( isset( $featured_images['post-default'] ) && false === $featured_images['post-default'] ) ? '' : 1,
105            'page-default'      => ( isset( $featured_images['page-default'] ) && false === $featured_images['page-default'] ) ? '' : 1,
106            'portfolio-default' => ( isset( $featured_images['portfolio-default'] ) && false === $featured_images['portfolio-default'] ) ? '' : 1,
107            'fallback'          => ( ! empty( $featured_images['fallback'] ) ) ? $featured_images['fallback'] : null,
108            'fallback-default'  => ( isset( $featured_images['fallback-default'] ) && false === $featured_images['fallback-default'] ) ? '' : 1,
109        );
110
111        $settings = array_merge(
112            $settings,
113            array(
114                'archive-option'   => get_option( 'jetpack_content_featured_images_archive', $settings['archive-default'] ),
115                'post-option'      => get_option( 'jetpack_content_featured_images_post', $settings['post-default'] ),
116                'page-option'      => get_option( 'jetpack_content_featured_images_page', $settings['page-default'] ),
117                'portfolio-option' => get_option( 'jetpack_content_featured_images_portfolio', $settings['portfolio-default'] ),
118                'fallback-option'  => get_option( 'jetpack_content_featured_images_fallback', $settings['fallback-default'] ),
119            )
120        );
121
122        return $settings;
123    }
124
125}
126
127if ( ! function_exists( 'jetpack_featured_images_should_load' ) ) {
128
129    /**
130     * Determine if the Jetpack Featured Images should be load.
131     */
132    function jetpack_featured_images_should_load() {
133        // If the theme doesn't support post thumbnails, don't continue.
134        if ( ! current_theme_supports( 'post-thumbnails' ) ) {
135            return false;
136        }
137
138        $opts = jetpack_featured_images_get_settings();
139
140        // If the theme doesn't support archive, post and page or if all the options are ticked and we aren't in the customizer, don't continue.
141        if (
142            ( true !== $opts['archive'] && true !== $opts['post'] && true !== $opts['page'] )
143            || ( 1 === $opts['archive-option'] && 1 === $opts['post-option'] && 1 === $opts['page-option'] && ! is_customize_preview() )
144        ) {
145            return false;
146        }
147
148        return true;
149    }
150
151}
152
153if ( ! function_exists( 'jetpack_featured_images_fallback_should_load' ) ) {
154
155    /**
156     * Determine if the Jetpack Featured Images fallback should load.
157     */
158    function jetpack_featured_images_fallback_should_load() {
159        // If the theme doesn't support post thumbnails, don't continue.
160        if ( ! current_theme_supports( 'post-thumbnails' ) ) {
161            return false;
162        }
163
164        $opts = jetpack_featured_images_get_settings();
165
166        // If the theme doesn't support fallback, don't continue.
167        if ( true !== $opts['fallback'] ) {
168            return false;
169        }
170
171        return true;
172    }
173
174}