Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/jetpack/modules/related-...
File: class.related-posts-customize.php
<?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
[0] Fix | Delete
[1] Fix | Delete
use Automattic\Jetpack\Assets;
[2] Fix | Delete
[3] Fix | Delete
// Exit if file is accessed directly.
[4] Fix | Delete
if ( ! defined( 'ABSPATH' ) ) {
[5] Fix | Delete
exit( 0 );
[6] Fix | Delete
}
[7] Fix | Delete
[8] Fix | Delete
/**
[9] Fix | Delete
* Class to include elements to modify Related Posts look in Customizer.
[10] Fix | Delete
*
[11] Fix | Delete
* @since 4.4.0
[12] Fix | Delete
* @phan-constructor-used-for-side-effects
[13] Fix | Delete
*/
[14] Fix | Delete
class Jetpack_Related_Posts_Customize {
[15] Fix | Delete
[16] Fix | Delete
/**
[17] Fix | Delete
* Key for panel, section and prefix for options. Same option name than in Options > Reading.
[18] Fix | Delete
*
[19] Fix | Delete
* @var string
[20] Fix | Delete
*/
[21] Fix | Delete
public $prefix = 'jetpack_relatedposts';
[22] Fix | Delete
[23] Fix | Delete
/**
[24] Fix | Delete
* Control to focus when customizer loads
[25] Fix | Delete
*
[26] Fix | Delete
* @var string
[27] Fix | Delete
*/
[28] Fix | Delete
public $focus = '';
[29] Fix | Delete
[30] Fix | Delete
/**
[31] Fix | Delete
* Class initialization.
[32] Fix | Delete
*
[33] Fix | Delete
* @since 4.4.0
[34] Fix | Delete
*/
[35] Fix | Delete
public function __construct() {
[36] Fix | Delete
if ( ! wp_is_block_theme() ) {
[37] Fix | Delete
add_action( 'customize_register', array( $this, 'customize_register' ) );
[38] Fix | Delete
add_action( 'customize_controls_enqueue_scripts', array( $this, 'customize_controls_enqueue_scripts' ) );
[39] Fix | Delete
}
[40] Fix | Delete
}
[41] Fix | Delete
[42] Fix | Delete
/**
[43] Fix | Delete
* Initialize Customizer controls.
[44] Fix | Delete
*
[45] Fix | Delete
* @since 4.4.0
[46] Fix | Delete
*
[47] Fix | Delete
* @param WP_Customize_Manager $wp_customize Customizer instance.
[48] Fix | Delete
*/
[49] Fix | Delete
public function customize_register( $wp_customize ) {
[50] Fix | Delete
[51] Fix | Delete
$wp_customize->add_section(
[52] Fix | Delete
$this->prefix,
[53] Fix | Delete
array(
[54] Fix | Delete
'title' => esc_html__( 'Related Posts', 'jetpack' ),
[55] Fix | Delete
'description' => '',
[56] Fix | Delete
'capability' => 'edit_theme_options',
[57] Fix | Delete
'priority' => 200,
[58] Fix | Delete
)
[59] Fix | Delete
);
[60] Fix | Delete
[61] Fix | Delete
$selective_options = array();
[62] Fix | Delete
[63] Fix | Delete
foreach ( $this->get_options( $wp_customize ) as $key => $field ) {
[64] Fix | Delete
$control_id = "$this->prefix[$key]";
[65] Fix | Delete
$selective_options[] = $control_id;
[66] Fix | Delete
$wp_customize->add_setting(
[67] Fix | Delete
$control_id,
[68] Fix | Delete
array(
[69] Fix | Delete
'default' => isset( $field['default'] ) ? $field['default'] : '',
[70] Fix | Delete
'type' => isset( $field['setting_type'] ) ? $field['setting_type'] : 'option',
[71] Fix | Delete
'capability' => isset( $field['capability'] ) ? $field['capability'] : 'edit_theme_options',
[72] Fix | Delete
'transport' => isset( $field['transport'] ) ? $field['transport'] : 'postMessage',
[73] Fix | Delete
)
[74] Fix | Delete
);
[75] Fix | Delete
$control_settings = array(
[76] Fix | Delete
'label' => isset( $field['label'] ) ? $field['label'] : '',
[77] Fix | Delete
'description' => isset( $field['description'] ) ? $field['description'] : '',
[78] Fix | Delete
'settings' => $control_id,
[79] Fix | Delete
'type' => isset( $field['control_type'] ) ? $field['control_type'] : 'text',
[80] Fix | Delete
'section' => $this->prefix,
[81] Fix | Delete
'priority' => 10,
[82] Fix | Delete
'active_callback' => isset( $field['active_callback'] ) ? $field['active_callback'] : __CLASS__ . '::is_single',
[83] Fix | Delete
);
[84] Fix | Delete
switch ( $field['control_type'] ) {
[85] Fix | Delete
case 'text':
[86] Fix | Delete
case 'checkbox':
[87] Fix | Delete
default:
[88] Fix | Delete
$wp_customize->add_control( new WP_Customize_Control( $wp_customize, $control_id, $control_settings ) );
[89] Fix | Delete
break;
[90] Fix | Delete
case 'select':
[91] Fix | Delete
if ( isset( $field['choices'] ) ) {
[92] Fix | Delete
$control_settings['choices'] = $field['choices'];
[93] Fix | Delete
$wp_customize->add_control( new WP_Customize_Control( $wp_customize, $control_id, $control_settings ) );
[94] Fix | Delete
}
[95] Fix | Delete
break;
[96] Fix | Delete
case 'message':
[97] Fix | Delete
$wp_customize->add_control( new Jetpack_Message_Control( $wp_customize, $control_id, $control_settings ) );
[98] Fix | Delete
break;
[99] Fix | Delete
}
[100] Fix | Delete
}
[101] Fix | Delete
[102] Fix | Delete
// If selective refresh is available, implement it.
[103] Fix | Delete
if ( isset( $wp_customize->selective_refresh ) ) {
[104] Fix | Delete
$wp_customize->selective_refresh->add_partial(
[105] Fix | Delete
"$this->prefix",
[106] Fix | Delete
array(
[107] Fix | Delete
'selector' => '.jp-relatedposts:not(.jp-relatedposts-block)',
[108] Fix | Delete
'settings' => $selective_options,
[109] Fix | Delete
'render_callback' => __CLASS__ . '::render_callback',
[110] Fix | Delete
'container_inclusive' => false,
[111] Fix | Delete
)
[112] Fix | Delete
);
[113] Fix | Delete
}
[114] Fix | Delete
}
[115] Fix | Delete
[116] Fix | Delete
/**
[117] Fix | Delete
* Callback that outputs the headline based on user choice.
[118] Fix | Delete
*
[119] Fix | Delete
* @since 4.4.0
[120] Fix | Delete
*/
[121] Fix | Delete
public static function render_callback() {
[122] Fix | Delete
echo Jetpack_RelatedPosts::init()->get_headline(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- content escaped in get_headline method
[123] Fix | Delete
}
[124] Fix | Delete
[125] Fix | Delete
/**
[126] Fix | Delete
* Check whether the current post contains a Related Posts block.
[127] Fix | Delete
*
[128] Fix | Delete
* @since 6.9.0
[129] Fix | Delete
*
[130] Fix | Delete
* @return bool
[131] Fix | Delete
*/
[132] Fix | Delete
public static function contains_related_posts_block() {
[133] Fix | Delete
if ( has_block( 'jetpack/related-posts' ) ) {
[134] Fix | Delete
return true;
[135] Fix | Delete
}
[136] Fix | Delete
[137] Fix | Delete
return false;
[138] Fix | Delete
}
[139] Fix | Delete
[140] Fix | Delete
/**
[141] Fix | Delete
* Check that we're in a single post view.
[142] Fix | Delete
* Will return `false` if the current post contains a Related Posts block,
[143] Fix | Delete
* because in that case we want to hide the Customizer controls.
[144] Fix | Delete
*
[145] Fix | Delete
* @since 4.4.0
[146] Fix | Delete
*
[147] Fix | Delete
* @return bool
[148] Fix | Delete
*/
[149] Fix | Delete
public static function is_single() {
[150] Fix | Delete
if ( self::contains_related_posts_block() ) {
[151] Fix | Delete
return false;
[152] Fix | Delete
}
[153] Fix | Delete
return is_single();
[154] Fix | Delete
}
[155] Fix | Delete
[156] Fix | Delete
/**
[157] Fix | Delete
* Check that we're not in a single post view.
[158] Fix | Delete
* Will return `false` if the current post contains a Related Posts block,
[159] Fix | Delete
* because in that case we want to hide the Customizer controls.
[160] Fix | Delete
*
[161] Fix | Delete
* @since 4.4.0
[162] Fix | Delete
*
[163] Fix | Delete
* @return bool
[164] Fix | Delete
*/
[165] Fix | Delete
public static function is_not_single() {
[166] Fix | Delete
if ( self::contains_related_posts_block() ) {
[167] Fix | Delete
return false;
[168] Fix | Delete
}
[169] Fix | Delete
return ! is_single();
[170] Fix | Delete
}
[171] Fix | Delete
[172] Fix | Delete
/**
[173] Fix | Delete
* Return list of options to modify.
[174] Fix | Delete
*
[175] Fix | Delete
* @since 4.4.0
[176] Fix | Delete
*
[177] Fix | Delete
* @param object $wp_customize Instance of WP Customizer.
[178] Fix | Delete
*
[179] Fix | Delete
* @return mixed|void
[180] Fix | Delete
*/
[181] Fix | Delete
public function get_options( $wp_customize ) {
[182] Fix | Delete
$transport = isset( $wp_customize->selective_refresh ) ? 'postMessage' : 'refresh';
[183] Fix | Delete
[184] Fix | Delete
$switched_locale = switch_to_locale( get_user_locale() );
[185] Fix | Delete
$headline = __( 'Related', 'jetpack' );
[186] Fix | Delete
if ( $switched_locale ) {
[187] Fix | Delete
restore_previous_locale();
[188] Fix | Delete
}
[189] Fix | Delete
[190] Fix | Delete
/**
[191] Fix | Delete
* The filter allows you to change the options used to display Related Posts in the Customizer.
[192] Fix | Delete
*
[193] Fix | Delete
* @module related-posts
[194] Fix | Delete
*
[195] Fix | Delete
* @since 4.4.0
[196] Fix | Delete
*
[197] Fix | Delete
* @param array $options Array of options used to display Related Posts in the Customizer.
[198] Fix | Delete
*/
[199] Fix | Delete
return apply_filters(
[200] Fix | Delete
'jetpack_related_posts_customize_options',
[201] Fix | Delete
array(
[202] Fix | Delete
'enabled' => array(
[203] Fix | Delete
'control_type' => 'hidden',
[204] Fix | Delete
'default' => 1,
[205] Fix | Delete
'setting_type' => 'option',
[206] Fix | Delete
'transport' => $transport,
[207] Fix | Delete
),
[208] Fix | Delete
'show_headline' => array(
[209] Fix | Delete
'label' => esc_html__( 'Show a headline', 'jetpack' ),
[210] Fix | Delete
'description' => esc_html__( 'This helps to clearly separate the related posts from post content.', 'jetpack' ),
[211] Fix | Delete
'control_type' => 'checkbox',
[212] Fix | Delete
'default' => 1,
[213] Fix | Delete
'setting_type' => 'option',
[214] Fix | Delete
'transport' => $transport,
[215] Fix | Delete
),
[216] Fix | Delete
'headline' => array(
[217] Fix | Delete
'label' => '',
[218] Fix | Delete
'description' => esc_html__( 'Enter text to use as headline.', 'jetpack' ),
[219] Fix | Delete
'control_type' => 'text',
[220] Fix | Delete
'default' => esc_html( $headline ),
[221] Fix | Delete
'setting_type' => 'option',
[222] Fix | Delete
'transport' => $transport,
[223] Fix | Delete
),
[224] Fix | Delete
'show_thumbnails' => array(
[225] Fix | Delete
'label' => esc_html__( 'Show thumbnails', 'jetpack' ),
[226] Fix | Delete
'description' => esc_html__( 'Show a thumbnail image where available.', 'jetpack' ),
[227] Fix | Delete
'control_type' => 'checkbox',
[228] Fix | Delete
'default' => 1,
[229] Fix | Delete
'setting_type' => 'option',
[230] Fix | Delete
'transport' => $transport,
[231] Fix | Delete
),
[232] Fix | Delete
'show_date' => array(
[233] Fix | Delete
'label' => esc_html__( 'Show date', 'jetpack' ),
[234] Fix | Delete
'description' => esc_html__( 'Display date when entry was published.', 'jetpack' ),
[235] Fix | Delete
'control_type' => 'checkbox',
[236] Fix | Delete
'default' => 1,
[237] Fix | Delete
'setting_type' => 'option',
[238] Fix | Delete
'transport' => $transport,
[239] Fix | Delete
),
[240] Fix | Delete
'show_context' => array(
[241] Fix | Delete
'label' => esc_html__( 'Show context', 'jetpack' ),
[242] Fix | Delete
'description' => esc_html__( "Display entry's category or tag.", 'jetpack' ),
[243] Fix | Delete
'control_type' => 'checkbox',
[244] Fix | Delete
'default' => 1,
[245] Fix | Delete
'setting_type' => 'option',
[246] Fix | Delete
'transport' => $transport,
[247] Fix | Delete
),
[248] Fix | Delete
'layout' => array(
[249] Fix | Delete
'label' => esc_html__( 'Layout', 'jetpack' ),
[250] Fix | Delete
'description' => esc_html__( 'Arrange entries in different layouts.', 'jetpack' ),
[251] Fix | Delete
'control_type' => 'select',
[252] Fix | Delete
'choices' => array(
[253] Fix | Delete
'grid' => esc_html__( 'Grid', 'jetpack' ),
[254] Fix | Delete
'list' => esc_html__( 'List', 'jetpack' ),
[255] Fix | Delete
),
[256] Fix | Delete
'default' => 'grid',
[257] Fix | Delete
'setting_type' => 'option',
[258] Fix | Delete
'transport' => $transport,
[259] Fix | Delete
),
[260] Fix | Delete
'msg_go_to_single' => array(
[261] Fix | Delete
'description' => esc_html__( 'Please visit a single post view to reveal the customization options.', 'jetpack' ),
[262] Fix | Delete
'control_type' => 'message',
[263] Fix | Delete
'active_callback' => __CLASS__ . '::is_not_single',
[264] Fix | Delete
),
[265] Fix | Delete
'msg_example' => array(
[266] Fix | Delete
'description' => esc_html__( 'Please note that the related posts displayed now are only for previewing purposes.', 'jetpack' ),
[267] Fix | Delete
'control_type' => 'message',
[268] Fix | Delete
),
[269] Fix | Delete
)
[270] Fix | Delete
);
[271] Fix | Delete
}
[272] Fix | Delete
[273] Fix | Delete
/**
[274] Fix | Delete
* Enqueue assets for Customizer controls.
[275] Fix | Delete
*
[276] Fix | Delete
* @since 4.4.0
[277] Fix | Delete
*/
[278] Fix | Delete
public function customize_controls_enqueue_scripts() {
[279] Fix | Delete
wp_enqueue_script(
[280] Fix | Delete
'jetpack_related-posts-customizer',
[281] Fix | Delete
Assets::get_file_url_for_environment(
[282] Fix | Delete
'_inc/build/related-posts/related-posts-customizer.min.js',
[283] Fix | Delete
'modules/related-posts/related-posts-customizer.js'
[284] Fix | Delete
),
[285] Fix | Delete
array( 'customize-controls' ),
[286] Fix | Delete
JETPACK__VERSION,
[287] Fix | Delete
false
[288] Fix | Delete
);
[289] Fix | Delete
}
[290] Fix | Delete
} // class end
[291] Fix | Delete
[292] Fix | Delete
/**
[293] Fix | Delete
* Control that displays a message in Customizer.
[294] Fix | Delete
*
[295] Fix | Delete
* @since 4.4.0
[296] Fix | Delete
* @todo break this out into its own file.
[297] Fix | Delete
*/
[298] Fix | Delete
class Jetpack_Message_Control extends WP_Customize_Control { // phpcs:ignore
[299] Fix | Delete
[300] Fix | Delete
/**
[301] Fix | Delete
* Render the message.
[302] Fix | Delete
*
[303] Fix | Delete
* @since 4.4.0
[304] Fix | Delete
*/
[305] Fix | Delete
public function render_content() {
[306] Fix | Delete
echo '<p class="description">' . esc_html( $this->description ) . '</p>';
[307] Fix | Delete
}
[308] Fix | Delete
} // class end
[309] Fix | Delete
[310] Fix | Delete
// Initialize controls.
[311] Fix | Delete
new Jetpack_Related_Posts_Customize();
[312] Fix | Delete
[313] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function