Как просмотреть / показать все пользовательские типы сообщений независимо от категории?

Я понимаю, что с этим вопросом я был слишком сложным вопросом.

Мой вопрос действительно таков:

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

Скажем, пользовательский тип сообщения foobar , я думаю, я хочу иметь URL-адрес mydomain.com/foobar, который будет перечислять их все. Никаких категорий. И с файлом шаблона в PHP, который я могу полностью настроить.

Вместо того, чтобы редактировать предыдущий вопрос, я оставил его там, если ответы там будут полезными и применимыми, если кому-то нужна «страница без страницы». Но cybmeta прав, в комментариях к этому вопросу, все, что мне нужно в моем случае, является страницей архива.

Solutions Collecting From Web of "Как просмотреть / показать все пользовательские типы сообщений независимо от категории?"

Еще раз спасибо cybmeta за его комментарии в моем предыдущем вопросе .

Конечно, решение заключается в использовании шаблона архива. Имя файла будет archive-foobar.php . Целевой URL-адрес действительно будет mydomain.com/foobar .

Это прекрасно работает, хотя для моих целей «архив» является неправильным. Конечный пользователь никогда не видит слово «архив».

Кроме того, используя примечания здесь , мне нужно было запомнить:

1) Если вы хотите использовать страницу пользовательского архива для своего пользовательского пост-типа, добавьте дополнительный аргумент в свои аргументы register_post_type (): 'has_archive' => true …

(Это укажет WP на поиск шаблона архива в соответствии с иерархией шаблонов codex с использованием текущего параметра slug вашего настраиваемого типа сообщения. Если вы хотите создать собственный слиг для своих архивов, замените TRUE на имя slug, например: 'has_archive' => 'products' может быть slug, который вы хотите использовать с «product» post_type.)

2) Перейдите на страницу «Настройки -> Перманентные ссылки», чтобы очистить текущие правила перезаписи и перестроить с помощью новых правил для вашего собственного архива.

Вы можете использовать :

 <?php $args = array('post_type'=>'your-post-type','post_status'=>'publish','posts_per_page'=>9999) $query = new Query($args); if($query->have_posts){ while($query->have_posts()) { $query->the_post(); //Do whatever display you want here } } ?> в <?php $args = array('post_type'=>'your-post-type','post_status'=>'publish','posts_per_page'=>9999) $query = new Query($args); if($query->have_posts){ while($query->have_posts()) { $query->the_post(); //Do whatever display you want here } } ?> 

Вы можете добавить следующий код в свой function.php, я никогда не проверяю это, но я считаю, что он должен решить проблему для вас. Одно, что вам нужно было сделать, используя код, – это изменить custom-post-type1... на имя вашего собственного CPT.

 function add_my_CPT( $query ) { if( is_category() || is_tag() && empty( $query->query_vars['suppress_filters'] ) ) { $query->set( 'post_type', array('post', 'nav_menu_item', 'custom-post-type1', 'custom-post-type2', 'custom-post-type2')); return $query; } } add_filter( 'pre_get_posts', 'add_my_CPT' );