Проблема с пользовательским виджетами WP_Query

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

Виджет работает правильно на заднем конце, но я не получаю никаких результатов на лицевой части (т. Е. «Нет списка найденных»). Я повторил экземпляр $ на экране, и это правильно, поэтому мои аргументы или запрос должны быть неверными. Может кто-нибудь сказать почему?

Вот код:

function widget($args, $instance) { extract( $args ); $title = apply_filters('widget_title', $instance['title']); $thiscountry = $instance['thiscountry']; $before_widget = '<!-- '.$thiscountry.' -->'; echo $before_widget; if ( $title ) { echo $before_title . $title . $after_title; } $this->getTourGuides($thiscountry); echo $after_widget; } function getTourGuides($thiscountry) { //html global $post; $args = array( 'posts_per_page' => -1, 'post_type' => array( 'tourguides' ), 'tax_query' => array( array( 'taxonomy' => 'countryname', 'field' => 'name', // also tried 'slug' 'terms' => $thiscountry, ), ), ); //echo $thiscountry; $listings = new WP_Query( $args); if($listings->found_posts > 0) { echo '<ul class="guides_widget">'; while ($listings->have_posts()) { /* Get custom post type fields */ $ecpt_website = get_post_meta( get_the_ID(), 'ecpt_website', true ); $listings->the_post(); $listItem = '<li>'; $listItem .= '<a href="' . $ecpt_website . '">'; $listItem .= get_the_title() . '</a>'; $listItem .= '</li>'; echo $listItem; } // end while echo '</ul>'; wp_reset_postdata(); }else{ echo '<p style="padding:25px;">No listing found</p>'; } } 

Код для экземпляра:

 // constructor function __construct() { parent::__construct( 'btn_tour_guides_by_country', // Base ID 'BTN Tour Guides by Country', // Name array('description' => __( 'Display List of Tour Guides by Country in a Sidebar')) ); } function update($new_instance, $old_instance) { $instance = $old_instance; $instance['title'] = strip_tags($new_instance['title']); $instance['thiscountry'] = strip_tags($new_instance['thiscountry']); return $instance; } // widget form creation function form($instance) { if( $instance) { $title = esc_attr($instance['title']); $thiscountry = esc_attr($instance['thiscountry']); } else { $title = 'Tour Operators'; $thiscountry = ''; } ?> <p> <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /> </p> <p> <label for="<?php echo $this->get_field_id('thiscountry'); ?>"><?php _e('Country:'); ?></label> <select id="<?php echo $this->get_field_id('thiscountry'); ?>" name="<?php echo $this->get_field_name('thiscountry'); ?>"> <?php $taxonomy = 'countryname'; $queried_term = get_term_by( 'slug', get_query_var($taxonomy) ); $terms = get_terms($taxonomy); //echo $term->slug; if ( $terms !== 0 ) { foreach ( $terms as $term ) {?> <?php echo '<option '.selected($instance['thiscountry'], $term->name).' value="' . $term->name . '" id="' . $term->name . '">', $term->name, '</option>'; ?> <?php } } ?> <?php ?> </select> </p> <?php } 

Solutions Collecting From Web of "Проблема с пользовательским виджетами WP_Query"

Я нашел ответ здесь. У них была одна и та же проблема: использование tax_query отменяет мой аргумент post_type в пользовательском WP_Query

Это проблема с плагином Easy Content Types. Пиппин, автор этого плагина, написал следующее: Проблема вызвана функцией в плагине, которая помогает разрешить таксономический архив 404s. У этого есть пара проблем, и из-за них есть установка, чтобы отключить функцию. Перейдите в «Типы содержимого»> «Настройки» и установите флажок «Отключить фиксацию архива таксономии». – Пиппин 11 мая '12 в 0:03