Completed
Push — add/jetpack-start-reconnect-us... ( 7f1fbb )
by
unknown
10:36
created

content-options.php ➔ jetpack_content_options_init()   B

Complexity

Conditions 4
Paths 5

Size

Total Lines 28
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 11
nc 5
nop 0
dl 0
loc 28
rs 8.5806
c 0
b 0
f 0
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
			'fallback'         => true, // enable or not the featured image fallback: true or false.
30
			'fallback-default' => true, // the default setting for featured image fallbacks: true or false (only required if false)
31
		),
32
	) );
33
 *
34
 */
35
36
/**
37
 * Activate the Content Options plugin.
38
 *
39
 * @uses current_theme_supports()
40
 */
41
function jetpack_content_options_init() {
42
	// If the theme doesn't support 'jetpack-content-options', don't continue.
43
	if ( ! current_theme_supports( 'jetpack-content-options' ) ) {
44
		return;
45
	}
46
47
	// Load the Customizer options.
48
	require( dirname( __FILE__ ) . '/content-options/customizer.php' );
49
50
	// Load Blog Display function.
51
	require( dirname( __FILE__ ) . '/content-options/blog-display.php' );
52
53
	// Load Author Bio function.
54
	require( dirname( __FILE__ ) . '/content-options/author-bio.php' );
55
56
	// Load Post Details function.
57
	require( dirname( __FILE__ ) . '/content-options/post-details.php' );
58
59
	// Load Featured Images function.
60
	if ( jetpack_featured_images_should_load() ) {
61
		require( dirname( __FILE__ ) . '/content-options/featured-images.php' );
62
	}
63
64
	// Load Featured Images Fallback function.
65
	if ( jetpack_featured_images_fallback_should_load() ) {
66
		require( dirname( __FILE__ ) . '/content-options/featured-images-fallback.php' );
67
	}
68
}
69
add_action( 'init', 'jetpack_content_options_init' );
70
71
function jetpack_featured_images_get_settings() {
72
	$options         = get_theme_support( 'jetpack-content-options' );
0 ignored issues
show
Coding Style introduced by
Equals sign not aligned correctly; expected 1 space but found 9 spaces

This check looks for improperly formatted assignments.

Every assignment must have exactly one space before and one space after the equals operator.

To illustrate:

$a = "a";
$ab = "ab";
$abc = "abc";

will have no issues, while

$a   = "a";
$ab  = "ab";
$abc = "abc";

will report issues in lines 1 and 2.

Loading history...
73
74
	$featured_images = ( ! empty( $options[0]['featured-images'] ) ) ? $options[0]['featured-images'] : null;
75
76
	$settings        = array(
0 ignored issues
show
Coding Style introduced by
Equals sign not aligned correctly; expected 1 space but found 8 spaces

This check looks for improperly formatted assignments.

Every assignment must have exactly one space before and one space after the equals operator.

To illustrate:

$a = "a";
$ab = "ab";
$abc = "abc";

will have no issues, while

$a   = "a";
$ab  = "ab";
$abc = "abc";

will report issues in lines 1 and 2.

Loading history...
77
		'archive'          => ( ! empty( $featured_images['archive'] ) ) ? $featured_images['archive'] : null,
78
		'post'             => ( ! empty( $featured_images['post'] ) ) ? $featured_images['post'] : null,
79
		'page'             => ( ! empty( $featured_images['page'] ) ) ? $featured_images['page'] : null,
80
		'archive-default'  => ( isset( $featured_images['archive-default'] ) && false === $featured_images['archive-default'] ) ? '' : 1,
81
		'post-default'     => ( isset( $featured_images['post-default'] ) && false === $featured_images['post-default'] ) ? '' : 1,
82
		'page-default'     => ( isset( $featured_images['page-default'] ) && false === $featured_images['page-default'] ) ? '' : 1,
83
		'fallback'         => ( ! empty( $featured_images['fallback'] ) ) ? $featured_images['fallback'] : null,
84
		'fallback-default' => ( isset( $featured_images['fallback-default'] ) && false === $featured_images['fallback-default'] ) ? '' : 1,
85
	);
86
87
	$settings        = array_merge( $settings, array(
0 ignored issues
show
Coding Style introduced by
Equals sign not aligned correctly; expected 1 space but found 8 spaces

This check looks for improperly formatted assignments.

Every assignment must have exactly one space before and one space after the equals operator.

To illustrate:

$a = "a";
$ab = "ab";
$abc = "abc";

will have no issues, while

$a   = "a";
$ab  = "ab";
$abc = "abc";

will report issues in lines 1 and 2.

Loading history...
88
		'archive-option'  => get_option( 'jetpack_content_featured_images_archive', $settings['archive-default'] ),
89
		'post-option'     => get_option( 'jetpack_content_featured_images_post', $settings['post-default'] ),
90
		'page-option'     => get_option( 'jetpack_content_featured_images_page', $settings['page-default'] ),
91
		'fallback-option' => get_option( 'jetpack_content_featured_images_fallback', $settings['fallback-default'] ),
92
	) );
93
94
	return $settings;
95
}
96
97
function jetpack_featured_images_should_load() {
98
	// If the theme doesn't support post thumbnails, don't continue.
99
	if ( ! current_theme_supports( 'post-thumbnails' ) ) {
100
		return false;
101
	}
102
103
	$opts = jetpack_featured_images_get_settings();
104
105
	// 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.
106
	if (
107
		( true !== $opts['archive'] && true !== $opts['post'] && true !== $opts['page'] )
108
		|| ( 1 === $opts['archive-option'] && 1 === $opts['post-option'] && 1 === $opts['page-option'] && ! is_customize_preview() )
109
	) {
110
		return false;
111
	}
112
113
	return true;
114
}
115
116
function jetpack_featured_images_fallback_should_load() {
117
	// If the theme doesn't support post thumbnails, don't continue.
118
	if ( ! current_theme_supports( 'post-thumbnails' ) ) {
119
		return false;
120
	}
121
122
	$opts = jetpack_featured_images_get_settings();
123
124
	// If the theme doesn't support fallback, don't continue.
125
	if ( true !== $opts['fallback'] ) {
126
		return false;
127
	}
128
129
	return true;
130
}
131