Для добавления выпадающего списка записей пользовательского типа в Theme Customizer создадим класс настройки Post_Dropdown_Custom_control:
<?php
if (class_exists('WP_Customize_Control'))
{
class Post_Dropdown_Custom_control extends WP_Customize_Control
{
public $query_args = array();
public function __construct($manager, $id, $args = array()) {
if(isset($args['query_vars']))
$this->query_args = $args['query_vars'];
parent::__construct( $manager, $id, $args );
}
public function render_content()
{
?>
<label>
<span class="customize-control-title customize-post-dropdown"><?php echo esc_html( $this->label ); ?></span>
<select name="<?php echo $this->id; ?>" id="<?php echo $this->id; ?>" <?php $this->link(); ?>>
<?php
$args = wp_parse_args( $this->query_args, array('numberposts' => '-1'));
$posts = get_posts($args);
foreach ( $posts as $post ) {
echo '<option value="'.$post->ID.'" '.selected($this->value(), $post->ID).'>'.$post->post_title.'</option>';
}
?>
</select>
</label>
<?php
}
}
}
?>
Следующий код добавит нужную нам настройку:
$wp_customize->add_setting( 'service' , array(
'transport' => 'postMessage',
) );
$wp_customize->selective_refresh->add_partial( 'service', array(
'selector' => '.service'
) );
$wp_customize->add_control( new Post_Dropdown_Custom_control( $wp_customize, 'service', array(
'label' => 'Услуга',
'section' => 'section_fr',
'query_vars' => array(
'post_type' => 'usluga'
)
) ) );
Где ' query_vars' - параметры функции get_posts().
Обновлено: 09.05.2018
Вам помогла эта статья? Оцените!