Intereting Posts
Автоматическое обновление страницы каждую минуту? Как добавить «Прикрепите это сообщение на первую страницу» до конца? Неплохо ли писать запись аудита / доступа / журнала транзакций непосредственно в файловую систему? Изображения WordPress не обрезаются должным образом Многоязычный плагин, скрывающийся от определенных блогов Получить определенное количество слов из post_Content Сделать виджет заголовка Пользовательский HTML-дисплей на всех страницах Как разрешить определенной роли, такой как Contributor, иметь возможность просматривать только ожидающие комментарии и одобрять их? Показывать имена дней с wp_get_archives вместо даты Способ подсчета количества людей, которые прокомментировали сообщение? Поиск возвращает все, если поисковый запрос имеет пробел Как фильтровать селектор роли? WP API V2 возвращает недопустимый идентификатор пользователя Как я могу создать страницу загрузки для (и только видимых) конкретных пользователей? Эпоха промежуточных сайтов: имеет ли смысл развиваться на местном уровне?

Сообщения из всех категорий отображаются вместо определенной категории

Создал пользовательское Menu типа сообщений, в котором есть Categories и Sub-Categories .

Мне удалось получить подкатегории сообщения, используя этот код.

 <?php $wcatTerms = get_terms('menu-items', array('hide_empty' => 0, 'orderby' => 'ASC', 'parent' =>0)); foreach($wcatTerms as $wcatTerm) : //echo $wcatTerm->name; $wsubargs = array('hierarchical'=>1,'show_option_none'=>'','hide_empty'=>0,'parent'=>$wcatTerm->term_id,'taxonomy'=>'menu-items'); $wsubcats = get_categories($wsubargs); foreach ($wsubcats as $wsc): $childcat = $wsc->name; ?> <h2><?php echo $childcat; ?></h2> endforeach; endforeach; 

Позже в соответствии с моим требованием я хочу отображать сообщение, основанное на sub-category для этого я использовал этот query

 <?php $posts = get_posts(array( 'post_type' => 'menu', 'orderby' => 'name', 'order' => 'DESC', 'taxonomy' => $wcatTerm->taxonomy, 'term' => $wcatTerm->slug, 'category' => '$childcat', 'nopaging' => true, )); foreach($posts as $post) { //echo $wsc->name; setup_postdata($post); ////set up post data for use in the loop (enables the_title(), etc without specifying a post ID--as referenced in the stackoverflow link above) ?> 

Но то, что я получаю, было Категории, которые перечислены как они должны, но ВСЕ записи повторяются для каждой подкатегории.

Как вы можете видеть в запросе, я уже добавил 'category' => '$childcat', но все же я не получаю фильтр, пожалуйста, помогите мне в получении этого.

Полный код

 <?php $wcatTerms = get_terms('menu-items', array('hide_empty' => 0, 'orderby' => 'ASC', 'parent' =>0)); foreach($wcatTerms as $wcatTerm) : //echo $wcatTerm->name; $wsubargs = array('hierarchical'=>1,'show_option_none'=>'','hide_empty'=>0,'parent'=>$wcatTerm->term_id,'taxonomy'=>'menu-items'); $wsubcats = get_categories($wsubargs); foreach ($wsubcats as $wsc): ?><h2><?php //echo $wsc->name; ?></h2> <?php $childcat = $wsc->name; $childid = $wsc->ID; ?> <h2><?php echo $childcat; ?></h2> <?php $posts = get_posts(array( 'post_type' => 'menu', 'orderby' => 'name', 'order' => 'DESC', 'tax_query' => array( array( 'taxonomy' => $wsc->taxonomy, 'term' => $wsc->term_id, 'include_children' => false, ) ), 'nopaging' => true, ));?> <div class="menu-title"><?php the_title(); ?></div> <div class="menu-title"><?php the_content(); ?></div> <?php //endwhile; ?> <?php endforeach; endforeach; ?> 

Solutions Collecting From Web of "Сообщения из всех категорий отображаются вместо определенной категории"

Перед тем, как я начну писать только одну заметку, вы не должны называть свое menu типа сообщения, menu является зарезервированным термином, поэтому вы можете столкнуться с проблемами со встроенной по умолчанию функциональностью. Однако вы можете использовать menus множественной формы, не заботясь о проблемах, угрожающих конфликтам

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

Следующее должно работать: ( Примечание. Вам просто нужно tax_query правильное имя таксономии и исправить идентификатор термина в tax_query для вашего конкретного случая использования )

 $posts = get_posts(array( 'post_type' => 'menu', 'orderby' => 'name', 'order' => 'DESC', 'tax_query' => array( array( 'taxonomy' => $wcatTerm->taxonomy, 'terms' => $wcatTerm->term_id, 'include_children' => false, ) ), 'nopaging' => true, )); 

РЕДАКТИРОВАТЬ

Параметры категории не будут работать, поскольку вы не используете сборку в таксономии, category . Вы используете пользовательскую таксономию, поэтому для запроса сообщений с определенного термина или терминов из пользовательской таксономии вам необходимо использовать tax_query как в моем примере кода.

Как я уже сказал, вам нужно tax_query правильные параметры в ваш tax_query поскольку я не знаю вашей точной настройки. Параметр terms (по умолчанию) должен быть целочисленным значением или массивом целочисленных значений term ID, поэтому учитывайте это

Давайте возьмем пример из вашего кода

 $wsubcats = get_categories($wsubargs); foreach ($wsubcats as $wsc): 

Внутри этого цикла foreach ваши значения tax_query будут следующими:

  • Ваша taxonomy будет равна $wsc->taxonomy

  • Значение ваших terms будет (int) $wsc->term_id

EDIT 2

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

 <?php $taxonomy = 'menu-items'; // Do not use hypens in taxonomy names, only use underscores $term_args = array( 'hide_empty' => 0, // Why do you need empty terms? 'orderby' => 'ASC', 'parent' => 0 ); $wcatTerms = get_terms( $taxonomy, // Taxonomy name $term_args // Array of arguments to get terms by ); // To avoid bugs and errors, run this only if we have a valid array of terms if ( !empty( $wcatTerms ) // Check that we do not have an empty array && !is_wp_error( $wcatTerms ) // Check that we do not have a WP_Error object returned ) { // If our conditional check passed, then only run the following code foreach($wcatTerms as $wcatTerm) { // Do not use : as it is hard to debug and to read, use old style curlies //echo $wcatTerm->name; $wsubargs = array( //'hierarchical'=>1, // This is default, not needed and can be removed //'show_option_none'=>'', // Invalid parameter, where do you get this from, to remove 'hide_empty'=> 0, // Why do you need empty terms? 'parent'=>$wcatTerm->term_id, ); //$wsubcats = get_categories($wsubargs); // Why use get_categories, get_categories uses get_terms, to remove $wsubcats = get_terms( $taxonomy, // We have set this earlier $wsubargs ); foreach ( $wsubcats as $wsc ) { // Again, do not use : as it is hard to debug ?><h2><?php //echo $wsc->name; ?></h2> <?php $childcat = $wsc->name; ?> <h2><?php echo $childcat; ?></h2> <?php //$posts = get_posts(array( // Do not mess with $posts global, rather use $posts_array, to remove $args = array( 'post_type' => 'menu', // Really bad name, reserved name in WordPress 'orderby' => 'name', 'order' => 'DESC', 'tax_query' => array( array( 'taxonomy' => $taxonomy, // We have defined this already right at the start 'terms => $wsc->term_id, 'include_children' => false, ) ), 'nopaging' => true, ); $posts_array = get_posts( $args ); // You are missing the loop here, that is why you are getting the same stuff over and over again if ( $posts_array ) { // Only run this if we actually have posts, if we do not have posts, we will have bugs and errors foreach ( $posts_array as $post ) { // You were missing this setup_postdata( $post ); // VERY VERY IMPORTANT, without this, the template tags like the_content will not work ?> <div class="menu-title"><?php the_title(); ?></div> <div class="menu-title"><?php the_content(); ?></div> <?php } // endforeach $posts_array wp_reset_postdata(); // VERY IMPORTANT to reset the $post global to main query } // endif $posts_array } // endforeach $wsubcats } // endforeach $wcatTerms } // endif check for valid array of terms ?>