PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 9.1.2
Jetpack – WP Security, Backup, Speed, & Growth v9.1.2
16.2-beta 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 All 501 releases
jetpack / modules / theme-tools / content-options.php

content-options.php in Jetpack – WP Security, Backup, Speed, & Growth 9.1.2, at modules/theme-tools/content-options.php

138 lines 6.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Content Options.
4 *
5 * This feature will only be activated for themes that declare their support.
6 * This can be done by adding code similar to the following during the
7 * 'after_setup_theme' action:
8 *
9 add_theme_support( 'jetpack-content-options', array(
10 'blog-display' => 'content', // the default setting of the theme: 'content', 'excerpt' or array( 'content', 'excerpt' ) for themes mixing both display.
11 'author-bio' => true, // display or not the author bio: true or false.
12 '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).
13 'masonry' => '.site-main', // a CSS selector matching the elements that triggers a masonry refresh if the theme is using a masonry layout.
14 'post-details' => array(
15 'stylesheet' => 'themeslug-style', // name of the theme's stylesheet.
16 'date' => '.posted-on', // a CSS selector matching the elements that display the post date.
17 'categories' => '.cat-links', // a CSS selector matching the elements that display the post categories.
18 'tags' => '.tags-links', // a CSS selector matching the elements that display the post tags.
19 'author' => '.byline', // a CSS selector matching the elements that display the post author.
20 'comment' => '.comments-link', // a CSS selector matching the elements that display the comment link.
21 ),
22 'featured-images' => array(
23 'archive' => true, // enable or not the featured image check for archive pages: true or false.
24 '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).
25 'post' => true, // enable or not the featured image check for single posts: true or false.
26 '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).
27 'page' => true, // enable or not the featured image check for single pages: true or false.
28 '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).
29 'portfolio' => true, // enable or not the featured image check for single projects: true or false.
30 '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).
31 'fallback' => true, // enable or not the featured image fallback: true or false.
32 'fallback-default' => true, // the default setting for featured image fallbacks: true or false (only required if false)
33 ),
34 ) );
35 */
36
37 /**
38 * Activate the Content Options plugin.
39 *
40 * @uses current_theme_supports()
41 */
42 function jetpack_content_options_init() {
43 // If the theme doesn't support 'jetpack-content-options', don't continue.
44 if ( ! current_theme_supports( 'jetpack-content-options' ) ) {
45 return;
46 }
47
48 // Load the Customizer options.
49 require dirname( __FILE__ ) . '/content-options/customizer.php';
50
51 // Load Blog Display function.
52 require dirname( __FILE__ ) . '/content-options/blog-display.php';
53
54 // Load Author Bio function.
55 require dirname( __FILE__ ) . '/content-options/author-bio.php';
56
57 // Load Post Details function.
58 require dirname( __FILE__ ) . '/content-options/post-details.php';
59
60 // Load Featured Images function.
61 if ( jetpack_featured_images_should_load() ) {
62 require dirname( __FILE__ ) . '/content-options/featured-images.php';
63 }
64
65 // Load Featured Images Fallback function.
66 if ( jetpack_featured_images_fallback_should_load() ) {
67 require dirname( __FILE__ ) . '/content-options/featured-images-fallback.php';
68 }
69 }
70 add_action( 'init', 'jetpack_content_options_init' );
71
72 function jetpack_featured_images_get_settings() {
73 $options = get_theme_support( 'jetpack-content-options' );
74
75 $featured_images = ( ! empty( $options[0]['featured-images'] ) ) ? $options[0]['featured-images'] : null;
76
77 $settings = array(
78 'archive' => ( ! empty( $featured_images['archive'] ) ) ? $featured_images['archive'] : null,
79 'post' => ( ! empty( $featured_images['post'] ) ) ? $featured_images['post'] : null,
80 'page' => ( ! empty( $featured_images['page'] ) ) ? $featured_images['page'] : null,
81 'portfolio' => ( ! empty( $featured_images['portfolio'] ) ) ? $featured_images['portfolio'] : null,
82 'archive-default' => ( isset( $featured_images['archive-default'] ) && false === $featured_images['archive-default'] ) ? '' : 1,
83 'post-default' => ( isset( $featured_images['post-default'] ) && false === $featured_images['post-default'] ) ? '' : 1,
84 'page-default' => ( isset( $featured_images['page-default'] ) && false === $featured_images['page-default'] ) ? '' : 1,
85 'portfolio-default' => ( isset( $featured_images['portfolio-default'] ) && false === $featured_images['portfolio-default'] ) ? '' : 1,
86 'fallback' => ( ! empty( $featured_images['fallback'] ) ) ? $featured_images['fallback'] : null,
87 'fallback-default' => ( isset( $featured_images['fallback-default'] ) && false === $featured_images['fallback-default'] ) ? '' : 1,
88 );
89
90 $settings = array_merge(
91 $settings,
92 array(
93 'archive-option' => get_option( 'jetpack_content_featured_images_archive', $settings['archive-default'] ),
94 'post-option' => get_option( 'jetpack_content_featured_images_post', $settings['post-default'] ),
95 'page-option' => get_option( 'jetpack_content_featured_images_page', $settings['page-default'] ),
96 'portfolio-option' => get_option( 'jetpack_content_featured_images_portfolio', $settings['portfolio-default'] ),
97 'fallback-option' => get_option( 'jetpack_content_featured_images_fallback', $settings['fallback-default'] ),
98 )
99 );
100
101 return $settings;
102 }
103
104 function jetpack_featured_images_should_load() {
105 // If the theme doesn't support post thumbnails, don't continue.
106 if ( ! current_theme_supports( 'post-thumbnails' ) ) {
107 return false;
108 }
109
110 $opts = jetpack_featured_images_get_settings();
111
112 // 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.
113 if (
114 ( true !== $opts['archive'] && true !== $opts['post'] && true !== $opts['page'] )
115 || ( 1 === $opts['archive-option'] && 1 === $opts['post-option'] && 1 === $opts['page-option'] && ! is_customize_preview() )
116 ) {
117 return false;
118 }
119
120 return true;
121 }
122
123 function jetpack_featured_images_fallback_should_load() {
124 // If the theme doesn't support post thumbnails, don't continue.
125 if ( ! current_theme_supports( 'post-thumbnails' ) ) {
126 return false;
127 }
128
129 $opts = jetpack_featured_images_get_settings();
130
131 // If the theme doesn't support fallback, don't continue.
132 if ( true !== $opts['fallback'] ) {
133 return false;
134 }
135
136 return true;
137 }
138