Intereting Posts
WordPress + Ceph в качестве хранилища мультимедиа XMLRPC медленные и странные веб-сайты / услуги Как определить фильтр по URL-адресу на странице категории? Назначение персонализированного сообщения для пользовательской таксономии на основе настраиваемого значения поля Сохранить значение флажка в метабоке Как составить список, отображающий подстраницы верхнего уровня, и любые подстраницы или братья и сестры с текущей страницы Как я могу отображать ответы цикла PHP foreach от AJAX Показать одну категорию на почте Custom Post Loop в архиве возвращает тот же самый параметр the_permalink Как мне получить attachment_id? Невозможно изменить URL-адрес сайта wordpress Tax_query не работает на multisite Открытые метаданные графика не натягиваются на Facebook до тех пор, пока я не запустил эту конкретную ссылку через отладчик Действие обратного вызова Redux Как изменить язык блога wordpress.com?

Как использовать раскрывающийся список для заполнения списка сообщений из CPT

Я создал виджет, который отображает последние сообщения из раскрывающегося списка всех типов сообщений блога. Я хочу добавить для пользователя возможность выбрать одно сообщение, которое будет отображаться как показано.

Я бы хотел, чтобы это произошло после того, как пользователь выберет свой тип сообщения, появится второй раскрывающийся список со списком всех сообщений этого CPT, но я не знаю, как его заполнить,

Это мой код виджетов:

class custom_post_type extends WP_Widget { /** * Register widget with WordPress. */ function __construct() { parent::__construct( 'custom_post_type', // Base ID __('Custom post type', ''), // Name array( 'description' => __( 'Dispaly any CPT', '' ), ) // Args ); } /** * Front-end display of widget. * * @see WP_Widget::widget() * * @param array $args Widget arguments. * @param array $instance Saved values from database. */ public function widget( $args, $instance ) { extract( $args ); $link_url = ($instance['url']); $types = empty($instance['types']) ? 'any' : explode(',', $instance['types']); echo $args['before_widget']; $args = array( 'post_type' => $types, 'posts_per_page' => 1 ); global $post; $the_query = new WP_Query( $args ); add_image_size( 'widget_homepage', 240, 180, false ); if($the_query->have_posts()) { while ($the_query->have_posts()) { $the_query->the_post(); the_post_thumbnail($size = 'widget_homepage'); echo '<h4 class="title">'; the_title(); echo '</h4>'; echo '<div class="date">'; the_date(); echo '</div>'; echo '<p>'; echo excerpt(25); echo '</p>'; ?> <a class="button" href="<?php the_permalink() ?>"> <?php _e('Read More','lookstein'); echo '</a>'; } wp_reset_postdata(); } else { echo '<p style="padding:25px;">No listing found</p>'; } echo $after_widget; } /** * Back-end widget form. * * @see WP_Widget::form() * * @param array $instance Previously saved values from database. */ public function form( $instance ) { // Set default arguments $instance = wp_parse_args( (array) $instance, array( 'types' => 'post', ) ); // Or use the instance $types = $instance['types']; // Let's turn $types, $cats, and $tags into an array if they are set if (!empty($types)) $types = explode(',', $types); // Count number of post types for select box sizing $cpt_types = get_post_types( array( 'public' => true ), 'names' ); if ($cpt_types) { foreach ($cpt_types as $cpt ) { $cpt_ar[] = $cpt; } $n = count($cpt_ar); if($n > 6) { $n = 6; } } else { $n = 3; } if ( isset( $instance[ 'url' ] ) ) { $link_url = $instance[ 'url' ]; } else { $link_url = __( '#', 'lookstein' ); } ?> <p> <label for="<?php echo $this->get_field_id('types'); ?>"><?php _e( 'Post types', 'upw' ); ?>:</label> <select name="<?php echo $this->get_field_name('types'); ?>[]" id="<?php echo $this->get_field_id('types'); ?>" class="widefat" style="height: auto;" size="<?php echo $n ?>" multiple> <option value="" <?php if (empty($types)) echo 'selected="selected"'; ?>><?php _e('&ndash; Show All &ndash;') ?></option> <?php $args = array( 'public' => true ); $post_types = get_post_types( $args, 'names' ); foreach ($post_types as $post_type ) { ?> <option value="<?php echo $post_type; ?>" <?php if(is_array($types) && in_array($post_type, $types)) { echo 'selected="selected"'; } ?>><?php echo $post_type;?></option> <?php } ?> </select> <label for="<?php echo $this->get_field_id( 'url' ); ?>"><?php _e( 'Button URL:' ); ?></label> <input class="widefat" id="<?php echo $this->get_field_id( 'url' ); ?>" name="<?php echo $this->get_field_name( 'url' ); ?>" type="text" value="<?php echo esc_attr( $link_url ); ?>"> </p> <?php } /** * Sanitize widget form values as they are saved. * * @see WP_Widget::update() * * @param array $new_instance Values just sent to be saved. * @param array $old_instance Previously saved values from database. * * @return array Updated safe values to be saved. */ public function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance['url'] = strip_tags( $new_instance['url'] ); $instance['types'] = (isset( $new_instance['types'] )) ? implode(',', (array) $new_instance['types']) : ''; return $instance; } } // end widget class RSS 

Solutions Collecting From Web of "Как использовать раскрывающийся список для заполнения списка сообщений из CPT"