Страница индекса для пользовательского типа записи

19 дек. 2013 г., 18:26:49
Просмотры: 15.3K
Голосов: 2

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

Я создал архивную страницу с именем mycpt-archive.php и страницу с именем myCPT.php.

Я добавил пользовательский URL в меню под названием "myCPT" вот так: www.mywebsite.com/mycpt Теперь, когда я кликаю в меню на "myCPT", отображается содержимое mycpt-archive.php, а не myCPT.php.

Я изучил иерархию шаблонов из CODEX и, кажется, я на правильном пути.

Когда я кликаю на "myCPT" в меню, отображается страница mycpt-archive.php, а не myCPT.php, которую я ожидаю увидеть.

Что я упускаю? Спасибо!

3
Комментарии

Не совсем понятно, зачем создавать два шаблона для, казалось бы, одной задачи? Кроме того, согласно иерархии, имя шаблона должно быть в формате archive-$posttype.php, поэтому я не уверен, как вообще загружается ваш обратный вариант.

Rarst Rarst
19 дек. 2013 г. 18:29:17

Мне нужны две страницы: одна для вывода списка некоторых записей из пользовательского типа записи, которая должна быть стандартной, и другая для вывода архива всех записей этого пользовательского типа, которая будет archive-myCPT.php

agis agis
19 дек. 2013 г. 19:48:55

Идея в том, чтобы иметь шаблон страницы, который будет использоваться для отображения некоторых записей из пользовательского типа, но не будет отображаться в archive-myCPT.php или не отображается по умолчанию, если это шаблон?

agis agis
19 дек. 2013 г. 20:13:44
Все ответы на вопрос 2
1

Если у вас есть:

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" ); //для архива
19 дек. 2013 г. 19:06:15
Комментарии

Я не использую плагин, я просто хочу создать шаблон страницы, где смогу отображать некоторые записи из моего CPT (Custom Post Type), и еще один файл под названием "archive-myCPT.php" для отображения архивов.

agis agis
19 дек. 2013 г. 20:23:05
2

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

  1. Создайте пользовательский шаблон страницы.
  2. Добавьте необходимые комментарии для именования шаблона страницы.
  3. Напишите пользовательский запрос wp_query для выборки нужных записей.
  4. Создайте страницу в WordPress.
  5. Назначьте ей созданный вами шаблон страницы.
  6. Опубликуйте.

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

Дайте знать, если я правильно понимаю ваши потребности.

19 дек. 2013 г. 21:44:42
Комментарии

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

agis agis
20 дек. 2013 г. 15:13:22

Извините за задержку с ответом. Вам нужно создать пользовательский 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(); } }`

MiracleGotMojo MiracleGotMojo
14 янв. 2014 г. 01:29:09