Страница индекса для пользовательского типа записи
Я зарегистрировал пользовательский тип записи и хочу создать страницу, где буду выводить список некоторых записей, это будет как индексная страница.
Я создал архивную страницу с именем mycpt-archive.php и страницу с именем myCPT.php.
Я добавил пользовательский URL в меню под названием "myCPT" вот так: www.mywebsite.com/mycpt Теперь, когда я кликаю в меню на "myCPT", отображается содержимое mycpt-archive.php, а не myCPT.php.
Я изучил иерархию шаблонов из CODEX и, кажется, я на правильном пути.
Когда я кликаю на "myCPT" в меню, отображается страница mycpt-archive.php, а не myCPT.php, которую я ожидаю увидеть.
Что я упускаю? Спасибо!
Если у вас есть:
register_post_type( 'my_custom_post_type', $args );
И вам нужна пользовательская страница для отображения всех записей этого пользовательского типа записи, вам необходимо создать: archive-my_custom_post_type.php
.
Но если вам не нужна пользовательская страница, WordPress будет использовать archive.php для отображения архива вашего пользовательского типа записи.
Если вам нужно только настроить страницу отдельной записи, вам необходимо создать: single-my_custom_post_type.php
Где вы создаете пользовательский тип записи, в functions.php темы или используя плагин?
Если используете functions.php, вам нужно создать archive-my_custom_post_type.php
или single-my_custom_post_type.php
в папке темы.
Если используете плагин, вам нужно создать archive-my_custom_post_type.php
или single-my_custom_post_type.php
в папке плагина и указать WordPress на его чтение, поэтому включите эту функцию в ваш плагин:
function get_custom_post_type_template($template) { global $post; if ($post->post_type == 'my_custom_post_type') { $template = dirname( __FILE__ ) . '/archive-my_custom_post_type.php'; } return $template; } //add_filter( "single_template", "get_custom_post_type_template" ); //для страницы отдельной записи add_filter( "archive_template", "get_custom_post_type_template" ); //для архива

Это звучит так, будто вам нужно создать пользовательский шаблон страницы с любым именем и поместить в него нужный вам пользовательский запрос. После создания шаблона страницы создайте страницу WordPress и укажите для нее использование этого пользовательского шаблона. Логично?
- Создайте пользовательский шаблон страницы.
- Добавьте необходимые комментарии для именования шаблона страницы.
- Напишите пользовательский запрос wp_query для выборки нужных записей.
- Создайте страницу в WordPress.
- Назначьте ей созданный вами шаблон страницы.
- Опубликуйте.
После завершения, скорее всего, вам захочется отредактировать шаблон страницы, чтобы уточнить и доработать ваш запрос.
Дайте знать, если я правильно понимаю ваши потребности.

Я создал файл шаблона, но не могу назначить его из панели управления, он работает только для обычных страниц, а не для страниц пользовательского типа записей.

Извините за задержку с ответом. Вам нужно создать пользовательский wp_query() внутри шаблона с собственным циклом. Вы можете сделать что-то вроде:
`$postTypeQuery = new wp_query( array('post_type'=> 'postTypeSlug'));
if($postTypeQuery->have_posts()){ while($postTypeQuery->have_post(){ $postTypeQuery->the_post(); echo get_the_title(); echo get_the_id(); echo get_the_content(); } }`
