Отображать страницу пользовательских сообщений?

У меня есть пользовательский тип сообщения, «design_asset».

Я показываю их на шаблоне страницы, с циклом

<?php rewind_posts(); $paged = ( get_query_var( 'paged' ) ) ? get_query_var('paged') : 1; $args = array( 'post_type' => 'design_asset', 'posts_per_page' => 100, 'orderby' => 'title', 'order' => 'ASC' ); $loop = new WP_Query( $args ); while ( $loop->have_posts() ) : $loop->the_post(); ?> <div class="col-md-4 col-xs-12"> <div class="thumbnail"> <div class="caption"> <?php the_post_thumbnail( 'thumbnail', array('class' => 'img-responsive') ); ?> <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3> <p class="excerpt"><?php the_excerpt(); ?></p> </div> </div> </div> <?php endwhile; ?> 

Также на этой странице я перечисляю категории с wp_list_categories

Когда вы нажимаете категорию в этом списке, она переходит в архив.php и отображает категорию там, благодаря ответу этой записи , например /category/components/

Я не совсем понимаю, почему WordPress использует archive.php вместо category.php , но давайте перейдем к нему на данный момент.

Теперь я пытаюсь переназначить этот цикл в archive.php . Я переместил его в loop-assetThumbs.php и вызвал его с помощью <?php get_template_part('loop', 'assetThumbs'); ?> <?php get_template_part('loop', 'assetThumbs'); ?>

Конечно, он вызывает ВСЕ сообщения или тип сообщения, я не могу понять, как отображать только «активную» категорию в URL, /category/components/

Как изменить цикл, чтобы сделать это? Или есть лучший способ отображать категории пользовательских типов сообщений через wp_list_categories ?

Примечание. Я также не уверен, почему он показывает 2 пустых итерации цикла здесь.

введите описание изображения здесь

Solutions Collecting From Web of "Отображать страницу пользовательских сообщений?"

Я думаю, ваша проблема в том точном коде, о котором вы говорили. pre_get_post – ублюдок, если вы не используете его правильно.

При любых условиях типа архива, используемых в pre_get_posts , это будет влиять как на передний, так и на задний конец. Сюда относятся страницы архивов, категории и таксономии, страницы тегов и страницы авторов. Вам нужно будет проверить, что вы используете только pre_get_posts на передней панели (используйте !is_admin() ).

Еще одна важная вещь, которую вам нужно будет сделать, – запустить pre_get_posts только по основному запросу. Поскольку pre_get_posts выполняется первым перед основным запросом и WP_Query и изменяет переменные запроса, будут затронуты как основной запрос, так и любые пользовательские запросы с использованием WP_Query . (Используйте is_main_query() )

Поэтому вам нужно будет изменить код, о котором идет речь, чтобы добавить проверку !is_admin

 function namespace_add_custom_types( $query ) { if( !is_admin() && $query->is_category() && $query->is_main_query ) { $query->set( 'post_type', array( 'post', 'your-custom-post-type-here' )); } } add_filter( 'pre_get_posts', 'namespace_add_custom_types' ); 

Надеюсь, это поможет. Если нет, дайте мне знать.

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

Стив, прежде чем внести эти изменения, я предложил сначала проверить свой ответ на ваш другой вопрос. Но, пожалуйста, помните о них в этом ответе для дальнейшего использования.