Intereting Posts
Дополнительная тема для детской темы Ошибка импорта мультимедиа в импортере WordPress Как добавить пользовательские стили текста в визуальный текстовый редактор? Нужно ли применять apply_filter ('widget_title', $ instance ) или любые другие фильтры widget_xxx? Как сделать персонализированный пост meta wp_editor переводимым? Переключение темы темы WordPress и темы об использовании двух тем одновременно, пожалуйста, помогите :) Добавить пользовательский столбец в панель «Пользователи» с пользовательскими полями «Типы»? Как установить значение по умолчанию для «Alt text» в диалоговом окне загрузки изображения? Виджет для показа сообщений в боковой панели на основе его идентификаторов Как отправить сообщение WordPress Multisite: иметь одинаковый заголовок и нижний колонтитул основного блога во всех суб-блогах Если продукт находится в коде подкатегории Безопасность и .htaccess Самостоятельный блог в Google Search Получить несколько значений атрибута короткого кода

Цикл для сопоставления таксономических терминов для «связанных» постов?

У меня есть custom-post-type с именем my_projects и пользовательская таксономия, называемая project_tags .

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

Поэтому я хочу назвать <?php get_related_projects("Car"); ?> <?php get_related_projects("Car"); ?> и получите 5 сообщений, которые также делят возвращенный tag .

Это моя текущая попытка (которая не работает)

 function get_related_projects( $term ) { echo '<ul class="featured-items">'; $args = array( 'post_type' => array('my_project'), 'order' => 'DSC', 'post_count' => 5, 'meta_key' => 'project_tags', 'meta_compare' => $term, ); $loop = new WP_Query( $args ); while ( $loop->have_posts() ) : $loop->the_post(); global $post; ?> <li> <figure class="project-image"> <?php if ( has_post_thumbnail()) : ?> <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" > <?php the_post_thumbnail(); ?> </a> <?php endif; ?> </figure> <h1 class="title"><a href="<?php the_permalink(); ?>"><span class="goto">a</span> <?php the_title(); ?></a></h1> </li> <?php endwhile; wp_reset_postdata(); echo '</ul>'; } 

Поскольку я не эксперт, когда дело доходит до пользовательских циклов, мне интересно, что я здесь делаю неправильно? Спасибо за помощь.

ОБНОВИТЬ:

 <?php if ( get_related_projects( "Car" ) ): ?> <em>Related Projects</em> <?php get_related_projects("Car"); ?> <?php endif; ?> 

Solutions Collecting From Web of "Цикл для сопоставления таксономических терминов для «связанных» постов?"

Измените свой массив $args немного:

 $args = array( 'post_type' => array( 'my_projects' ), // it need to get the posts from this post_type 'order' => 'DESC', 'posts_per_page' => 5, 'project_tags' => $term // search taxonomy ); 

Другие способы поиска терминов таксономии можно найти здесь на страницах WordPress Codex.

Ответьте на свое обновление :

Вы можете добавить проверки, которые возвращают false если функция «не может» возвращает значения:

 // if the given category doesn't exist if ( ! is_category( $term ) ) return false; // if the given category doen't have posts if ( ! $loop->have_posts() ) return false; 

То, как вы настроили свой код, чтобы проверить, есть ли связанные проекты, не будет работать так, как вы теперь настраиваете функцию, попробуйте следующее:

 function get_related_projects( $term ) { // if the given category doesn't exist if ( ! is_category( $term ) ) return false; $return = ''; $return .= '<ul class="featured-items">'; $args = array( 'post_type' => array( 'my_projects' ), // it need to get the posts from this post_type 'order' => 'DESC', 'posts_per_page' => 5, 'project_tags' => $term // search taxonomy ); $loop = new WP_Query( $args ); // if the given category doen't have posts if ( ! $loop->have_posts() ) return false; while ( $loop->have_posts() ) : $loop->the_post(); global $post; $figure = ''; if ( has_post_thumbnail()) : $figure = sprintf( '<a href="%1$s" title="%2$s">%3$s</a>', get_permalink( get_the_ID() ), the_title_attribute( array( 'echo' => false ) ), get_the_post_thumbnail( get_the_ID() ) ); endif; $return .= sprintf( ' <li> <figure class="project-image">%1$s</figure> <h1 class="title"><a href="%2$s"><span class="goto">a</span> %3$s</a></h1> </li>', $figure, get_permalink( get_the_ID() ), get_the_title() ); endwhile; wp_reset_postdata(); $return .= '</ul>' return $return; } 

И затем используйте следующий код для проверки функции:

 <?php if ( $projects = get_related_projects( "Car" ) ): ?> <em>Related Projects</em> <?php echo $projects; ?> <?php endif; ?>