label ); ?>
add_section( 'jetpack_content_options', array(
'title' => esc_html__( 'Content Options', 'jetpack' ),
'theme_supports' => 'jetpack-content-options',
'priority' => 100,
) );
// Add Blog Display option.
if ( in_array( $blog_display, array( 'content', 'excerpt', 'mixed' ) ) ) {
if ( 'mixed' === $blog_display ) {
$blog_display_choices = array(
'content' => esc_html__( 'Full post', 'jetpack' ),
'excerpt' => esc_html__( 'Post excerpt', 'jetpack' ),
'mixed' => esc_html__( 'Default', 'jetpack' ),
);
$blog_display_description = esc_html__( 'Choose between a full post or an excerpt for the blog and archive pages, or opt for the theme\'s default combination of excerpt and full post.', 'jetpack' );
} else {
$blog_display_choices = array(
'content' => esc_html__( 'Full post', 'jetpack' ),
'excerpt' => esc_html__( 'Post excerpt', 'jetpack' ),
);
$blog_display_description = esc_html__( 'Choose between a full post or an excerpt for the blog and archive pages.', 'jetpack' );
if ( 'mixed' === get_option( 'jetpack_content_blog_display' ) ) {
update_option( 'jetpack_content_blog_display', $blog_display );
}
}
$wp_customize->add_setting( 'jetpack_content_blog_display', array(
'default' => $blog_display,
'type' => 'option',
'transport' => 'postMessage',
'sanitize_callback' => 'jetpack_content_options_sanitize_blog_display',
) );
$wp_customize->add_control( 'jetpack_content_blog_display', array(
'section' => 'jetpack_content_options',
'label' => esc_html__( 'Blog Display', 'jetpack' ),
'description' => $blog_display_description,
'type' => 'radio',
'choices' => $blog_display_choices,
) );
}
// Add Author Bio option.
if ( true === $author_bio ) {
$wp_customize->add_setting( 'jetpack_content_author_bio_title' );
$wp_customize->add_control( new Jetpack_Customize_Control_Title( $wp_customize, 'jetpack_content_author_bio_title', array(
'section' => 'jetpack_content_options',
'label' => esc_html__( 'Author Bio', 'jetpack' ),
'type' => 'title',
) ) );
$wp_customize->add_setting( 'jetpack_content_author_bio', array(
'default' => $author_bio_default,
'type' => 'option',
'sanitize_callback' => 'jetpack_content_options_sanitize_checkbox',
) );
$wp_customize->add_control( 'jetpack_content_author_bio', array(
'section' => 'jetpack_content_options',
'label' => esc_html__( 'Display on single posts', 'jetpack' ),
'type' => 'checkbox',
) );
}
// Add Post Details options.
if ( ( ! empty( $post_details ) )
&& ( ! empty( $post_details['stylesheet'] ) )
&& ( ! empty( $date )
|| ! empty( $categories )
|| ! empty( $tags )
|| ! empty( $author )
|| ! empty( $comment ) ) ) {
$wp_customize->add_setting( 'jetpack_content_post_details_title' );
$wp_customize->add_control( new Jetpack_Customize_Control_Title( $wp_customize, 'jetpack_content_post_details_title', array(
'section' => 'jetpack_content_options',
'label' => esc_html__( 'Post Details', 'jetpack' ),
'type' => 'title',
) ) );
// Post Details: Date
if ( ! empty( $date ) ) {
$wp_customize->add_setting( 'jetpack_content_post_details_date', array(
'default' => 1,
'type' => 'option',
'transport' => 'postMessage',
'sanitize_callback' => 'jetpack_content_options_sanitize_checkbox',
) );
$wp_customize->add_control( 'jetpack_content_post_details_date', array(
'section' => 'jetpack_content_options',
'label' => esc_html__( 'Display date', 'jetpack' ),
'type' => 'checkbox',
) );
}
// Post Details: Categories
if ( ! empty( $categories ) ) {
$wp_customize->add_setting( 'jetpack_content_post_details_categories', array(
'default' => 1,
'type' => 'option',
'transport' => 'postMessage',
'sanitize_callback' => 'jetpack_content_options_sanitize_checkbox',
) );
$wp_customize->add_control( 'jetpack_content_post_details_categories', array(
'section' => 'jetpack_content_options',
'label' => esc_html__( 'Display categories', 'jetpack' ),
'type' => 'checkbox',
) );
}
// Post Details: Tags
if ( ! empty( $tags ) ) {
$wp_customize->add_setting( 'jetpack_content_post_details_tags', array(
'default' => 1,
'type' => 'option',
'transport' => 'postMessage',
'sanitize_callback' => 'jetpack_content_options_sanitize_checkbox',
) );
$wp_customize->add_control( 'jetpack_content_post_details_tags', array(
'section' => 'jetpack_content_options',
'label' => esc_html__( 'Display tags', 'jetpack' ),
'type' => 'checkbox',
) );
}
// Post Details: Author
if ( ! empty( $author ) ) {
$wp_customize->add_setting( 'jetpack_content_post_details_author', array(
'default' => 1,
'type' => 'option',
'transport' => 'postMessage',
'sanitize_callback' => 'jetpack_content_options_sanitize_checkbox',
) );
$wp_customize->add_control( 'jetpack_content_post_details_author', array(
'section' => 'jetpack_content_options',
'label' => esc_html__( 'Display author', 'jetpack' ),
'type' => 'checkbox',
) );
}
// Post Details: Comment link
if ( ! empty( $comment ) ) {
$wp_customize->add_setting( 'jetpack_content_post_details_comment', array(
'default' => 1,
'type' => 'option',
'transport' => 'postMessage',
'sanitize_callback' => 'jetpack_content_options_sanitize_checkbox',
) );
$wp_customize->add_control( 'jetpack_content_post_details_comment', array(
'section' => 'jetpack_content_options',
'label' => esc_html__( 'Display comment link', 'jetpack' ),
'type' => 'checkbox',
) );
}
}
// Add Featured Images options.
if ( true === $fi_archive || true === $fi_post || true === $fi_page || true === $fi_portfolio || true === $fi_fallback ) {
$wp_customize->add_setting( 'jetpack_content_featured_images_title' );
$wp_customize->add_control( new Jetpack_Customize_Control_Title( $wp_customize, 'jetpack_content_featured_images_title', array(
'section' => 'jetpack_content_options',
'label' => esc_html__( 'Featured Images', 'jetpack' ) . sprintf( '%1$s', esc_html__( 'Learn more about Featured Images', 'jetpack' ) ),
'type' => 'title',
'active_callback' => 'jetpack_post_thumbnail_supports',
) ) );
// Featured Images: Archive
if ( true === $fi_archive ) {
$wp_customize->add_setting( 'jetpack_content_featured_images_archive', array(
'default' => $fi_archive_default,
'type' => 'option',
'sanitize_callback' => 'jetpack_content_options_sanitize_checkbox',
) );
$wp_customize->add_control( 'jetpack_content_featured_images_archive', array(
'section' => 'jetpack_content_options',
'label' => esc_html__( 'Display on blog and archives', 'jetpack' ),
'type' => 'checkbox',
'active_callback' => 'jetpack_post_thumbnail_supports',
) );
}
// Featured Images: Post
if ( true === $fi_post ) {
$wp_customize->add_setting( 'jetpack_content_featured_images_post', array(
'default' => $fi_post_default,
'type' => 'option',
'sanitize_callback' => 'jetpack_content_options_sanitize_checkbox',
) );
$wp_customize->add_control( 'jetpack_content_featured_images_post', array(
'section' => 'jetpack_content_options',
'label' => esc_html__( 'Display on single posts', 'jetpack' ),
'type' => 'checkbox',
'active_callback' => 'jetpack_post_thumbnail_supports',
) );
}
// Featured Images: Page
if ( true === $fi_page ) {
$wp_customize->add_setting( 'jetpack_content_featured_images_page', array(
'default' => $fi_page_default,
'type' => 'option',
'sanitize_callback' => 'jetpack_content_options_sanitize_checkbox',
) );
$wp_customize->add_control( 'jetpack_content_featured_images_page', array(
'section' => 'jetpack_content_options',
'label' => esc_html__( 'Display on pages', 'jetpack' ),
'type' => 'checkbox',
'active_callback' => 'jetpack_post_thumbnail_supports',
) );
}
// Featured Images: Portfolio
if ( true === $fi_portfolio && post_type_exists( 'jetpack-portfolio' ) ) {
$wp_customize->add_setting( 'jetpack_content_featured_images_portfolio', array(
'default' => $fi_portfolio_default,
'type' => 'option',
'sanitize_callback' => 'jetpack_content_options_sanitize_checkbox',
) );
$wp_customize->add_control( 'jetpack_content_featured_images_portfolio', array(
'section' => 'jetpack_content_options',
'label' => esc_html__( 'Display on single projects', 'jetpack' ),
'type' => 'checkbox',
'active_callback' => 'jetpack_post_thumbnail_supports',
) );
}
// Featured Images: Fallback
if ( true === $fi_fallback ) {
$wp_customize->add_setting( 'jetpack_content_featured_images_fallback', array(
'default' => $fi_fallback_default,
'type' => 'option',
'sanitize_callback' => 'jetpack_content_options_sanitize_checkbox',
) );
$wp_customize->add_control( 'jetpack_content_featured_images_fallback', array(
'section' => 'jetpack_content_options',
'label' => esc_html__( 'Automatically use first image in post', 'jetpack' ),
'type' => 'checkbox',
'active_callback' => 'jetpack_post_thumbnail_supports',
) );
}
}
}
add_action( 'customize_register', 'jetpack_content_options_customize_register' );
/**
* Return whether the theme supports Post Thumbnails.
*/
function jetpack_post_thumbnail_supports() {
return ( current_theme_supports( 'post-thumbnails' ) );
}
/**
* Sanitize the checkbox.
*
* @param int $input.
* @return boolean|string
*/
function jetpack_content_options_sanitize_checkbox( $input ) {
return ( 1 == $input ) ? 1 : '';
}
/**
* Sanitize the Display value.
*
* @param string $display.
* @return string.
*/
function jetpack_content_options_sanitize_blog_display( $display ) {
if ( ! in_array( $display, array( 'content', 'excerpt', 'mixed' ) ) ) {
$display = 'content';
}
return $display;
}
/**
* Binds JS handlers to make Theme Customizer preview reload changes asynchronously.
*/
function jetpack_content_options_customize_preview_js() {
$options = get_theme_support( 'jetpack-content-options' );
$blog_display = ( ! empty( $options[0]['blog-display'] ) ) ? $options[0]['blog-display'] : null;
$blog_display = preg_grep( '/^(content|excerpt)$/', (array) $blog_display );
sort( $blog_display );
$blog_display = implode( ', ', $blog_display );
$blog_display = ( 'content, excerpt' === $blog_display ) ? 'mixed' : $blog_display;
$masonry = ( ! empty( $options[0]['masonry'] ) ) ? $options[0]['masonry'] : null;
$post_details = ( ! empty( $options[0]['post-details'] ) ) ? $options[0]['post-details'] : null;
$date = ( ! empty( $post_details['date'] ) ) ? $post_details['date'] : null;
$categories = ( ! empty( $post_details['categories'] ) ) ? $post_details['categories'] : null;
$tags = ( ! empty( $post_details['tags'] ) ) ? $post_details['tags'] : null;
$author = ( ! empty( $post_details['author'] ) ) ? $post_details['author'] : null;
$comment = ( ! empty( $post_details['comment'] ) ) ? $post_details['comment'] : null;
wp_enqueue_script( 'jetpack-content-options-customizer', plugins_url( 'customizer.js', __FILE__ ), array( 'customize-preview' ), '1.0', true );
wp_localize_script( 'jetpack-content-options-customizer', 'blogDisplay', array(
'display' => get_option( 'jetpack_content_blog_display', $blog_display ),
'masonry' => $masonry,
) );
wp_localize_script( 'jetpack-content-options-customizer', 'postDetails', array(
'date' => $date,
'categories' => $categories,
'tags' => $tags,
'author' => $author,
'comment' => $comment,
) );
}
add_action( 'customize_preview_init', 'jetpack_content_options_customize_preview_js' );