Добавление выпадающего списка записей пользовательского типа в Theme Customizer

Для добавления выпадающего списка записей пользовательского типа в 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

Вам помогла эта статья? Оцените!
(1 оценок, среднее: 5,00 из 5)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *