Intereting Posts
Запрос с использованием запроса WP с использованием цены мета-ключа Может ли кто-нибудь рекомендовать систему CRM / Project Management на основе WordPress или плагина? Получение URL-адреса сайта, включая переднюю базу Как показать только сегодняшнюю почту? Пользовательские значения метаданных отправляются с помощью автосохранения Ссылка из navbar в категории Перечислите 5 самых последних дочерних страниц Заменить различные таблицы стилей, используя условия IE Несколько (две) категории на одной странице. Передача значения в качестве скрытого параметра на следующую страницу Отправить форму в другой файл php добавляет постоянную ссылку в URL-адрес Можно ли получить URL-адрес графического образа (полноразмерного) с изображения меньшего размера? Проверьте, отображается ли страница пользовательского архива таксономии Добавить поддержку темы для эскизов сообщений Нет Внешний вид -> Меню заголовка

Получить список пользовательских сообщений для каждого короткого кода категории

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

<?php add_shortcode( 'categorylist', 'msc_category_post_list_shortcode' ); function msc_category_post_list_shortcode($atts) { $categories_args = array( 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => 1, 'taxonomy' => 'cars_category' ); $categories = get_categories( $categories_args ); foreach( $categories as $category ) : $postlist_args = array( 'posts_per_page' => -1, 'offset' => 0, 'category' => $category->cat_ID, 'orderby' => 'post_date', 'order' => 'DESC', 'post_type' => 'msccar', 'post_status' => 'publish' ); $custom_posts = get_posts( $postlist_args ); foreach ( $custom_posts as $post ) : setup_postdata( $post ); ?> <?php $posts .= '<li>'; ?> <?php $posts .= '<a href="' . the_permalink() . '">' . the_title() . '</a>' ?> <?php $posts .= '</li>'; ?> <?php endforeach; wp_reset_postdata(); return $posts; endforeach; } 

Вы не имеете дело с категориями. Вы имеете дело с пользовательской таксономией.

 $postlist_args = array( 'posts_per_page' => -1, 'offset' => 0, // 'category' => $category->cat_ID, // not this 'tax_query' => array( array( 'taxonomy' => 'cars_category', 'field' => 'id', 'terms' => $category->term_ID, ) ), 'orderby' => 'post_date', 'order' => 'DESC', 'post_type' => 'msccar', 'post_status' => 'publish' ); 

Это непроверено, и для проверки это потребует немного настройки на моем конце – создания таксономии, сообщений и т. Д. – но это должна быть идея.

Я должен указать, что, хотя этот (или какой-то вариант) должен работать, он также может быть очень неэффективным. Вы будете запускать один запрос к базе данных для категорий плюс один запрос на возвращаемую категорию. Вы можете легко иметь 30, 40, 50 или более запросов от этого блока кода.

По моему опыту, почти всегда более эффективно запускать как можно меньше запросов и перетасовывать результаты в PHP.

См. https://wordpress.stackexchange.com/a/91263/21376