Intereting Posts
Как настроить продукт с несколькими вариантами цены? Как сделать wp-login.php недоступным Как добавить социальные кнопки, такие как facebook и twitter в нижнем колонтитуле темы? Атрибуты по умолчанию для штрих-кода по умолчанию, отличные от параметров по умолчанию Доступ для добавления подстраниц, но не для страниц Как включить новые электронные письма с уведомлением об учетной записи (администратору)? Категории заказов по slug vs. name Отображение страницы WordPress 404 в подкаталоге с собственной 404 страницей автор статьи thumbnail показать сообщение thumbnail Yoast Карта сайта группировка внешних файлов Sitemap Страница пользовательского архива WordPress Использовать настраиваемый тип публикации в качестве настраиваемого поля Расположение базы данных в WordPress Как добавить ссылку (href), поэтому, когда я нажимаю на нее, она отображает (показывает все) сообщения пользовательского типа сообщений (rich_media) из текущей категории? Есть ли способ открыть дополнительные поля для функции «Массовое действие»> «Редактировать»?

Как отображать связанные записи по подкатегории, а не родительскую категорию

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

Так, например, сообщение может быть присвоено категориям A, B и C, но я хочу показать связанные записи в зависимости от подкатегории текущей записи B и не показывать все сообщения из A, B или C. Извините, этот вопрос / проблему трудно объяснить.

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

More in <?php $category = get_the_category(); if ( in_category(52) || in_category(56) || in_category(57) || in_category(99) || in_category(28) ) { echo $category[1]->cat_name; } else {echo $category[0]->cat_name;} ?> <?php if (have_posts() && !(in_category('32'))) : ?> <?php $i = 1; while (have_posts() && $i <= 1) : the_post(); ?> <?php $related = get_posts(array('category__in' => wp_get_post_categories($post->ID), 'numberposts' => 1, 'post__not_in' => array($post->ID))); if($related) foreach( $related as $post) { setup_postdata($post); ?> <?php the_post_thumbnail('medium'); ?> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <a href="<?php the_permalink(); ?>"><?php the_excerpt(''); ?></a> <?php the_author(); ?></div> <?php } wp_reset_postdata(); ?> <?php $i++; endwhile; ?> <?php endif; ?> 

Благодаря!

Solutions Collecting From Web of "Как отображать связанные записи по подкатегории, а не родительскую категорию"

На самом деле существует гораздо более простой способ сделать это.

Во-первых, чтобы получить дочернюю категорию, просто проверьте значение родителя каждой категории. Если это категория верхнего уровня, родитель будет равен 0. Таким образом, дочерняя категория передаст тест, if( 0 != $category->parent ) :

 $categories = get_the_category(); foreach( $categories as $category ){ if( 0 != $category->parent ) $child_cat = $category; } 

Затем запросите свои сообщения, используя этот идентификатор категории, как аргумент cat . Чтобы вывести миниатюру только для первого сообщения, просто проверьте, является ли current_post вашего объекта запроса 0. Этот номер автоматически увеличивается для каждого сообщения в вашем цикле, начиная с 0:

 if( isset( $child_cat ) ){ echo 'More in ' . $child_cat->name; $args = array( 'cat' => $child_cat->term_id, 'post__not_in' => array( get_the_ID() ) ); $related = new WP_Query( $args ); if( $related->have_posts() ){ while( $related->have_posts() ){ $related->the_post(); if( 0 == $related->current_post ){ the_post_thumbnail('medium'); } // your template tags, etc.. the_title(); } wp_reset_postdata(); } } со if( isset( $child_cat ) ){ echo 'More in ' . $child_cat->name; $args = array( 'cat' => $child_cat->term_id, 'post__not_in' => array( get_the_ID() ) ); $related = new WP_Query( $args ); if( $related->have_posts() ){ while( $related->have_posts() ){ $related->the_post(); if( 0 == $related->current_post ){ the_post_thumbnail('medium'); } // your template tags, etc.. the_title(); } wp_reset_postdata(); } } 

Также обратите внимание: вам никогда не нужно использовать wp_reset_query() если вы не перезапишете глобальную $wp_query , чего здесь не происходит.

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

Это дало мне ярлык для раздела подкатегории связанных элементов на боковой панели, исключив родительские категории:

 More in <?php $category = get_the_category(); $catname = $category[0]->cat_name; if ($catname == 'News' || $catname == 'Featured' || $catname == 'Nav Bar News') { $catname = $category[1]->cat_name; if ($catname == 'News' || $catname == 'Featured' || $catname == 'Nav Bar News') { $catname = $category[2]->cat_name; if ($catname == 'News' || $catname == 'Featured' || $catname == 'Nav Bar News') { $catname = $category[3]->cat_name; } } } else { $catname = $category[0]->cat_name; } echo $catname; ?> 

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

  wp_reset_query(); $this_post = $post->ID; $category = get_the_category($post->ID); $category = $category[0]->cat_ID; if ($category == '30' || $category == '28' || $category == '99') { $category = $category[1]->cat_ID; if ($category == '30' || $category == '28' || $category == '99') { $category = $category[2]->cat_ID; if ($category == '30' || $category == '28' || $category == '99') { $category = $category[3]->cat_ID; } } } $args = array( 'category__in' => array($category), 'post__not_in' => array($this_post) ); $the_query = new WP_Query($args); if ( $the_query->have_posts() && !(in_category('32'))) { $i = 0; while ( $the_query->have_posts() && $i < 1) { $the_query->the_post(); ?> <?php the_post_thumbnail('medium'); ?> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <a href="<?php the_permalink(); ?>"><?php echo excerpt(30); ?></a> <?php the_author(); ?> <?php $i++; } } else { //echo 'no posts'; } wp_reset_postdata(); wp_reset_query(); $this_post = $post->ID; $category = get_the_category($post->ID); $category = $category[0]->cat_ID; if ($category == '30' || $category == '28' || $category == '99') { $category = $category[1]->cat_ID; if ($category == '30' || $category == '28' || $category == '99') { $category = $category[2]->cat_ID; if ($category == '30' || $category == '28' || $category == '99') { $category = $category[3]->cat_ID; } } } $args = array( 'category__in' => array($category), 'post__not_in' => array($this_post), 'offset' => 1 ); $the_query = new WP_Query($args); if ( $the_query->have_posts() && !(in_category('32'))) { $i = 0; while ( $the_query->have_posts() && $i < 3) { $the_query->the_post(); ?> <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a> <?php if ($i < 2) { ?> <hr style="width: 92%;"> <?php } ?> <?php $i++; } } else { //echo 'no posts'; } wp_reset_postdata(); 

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