На веб-сайте WordPress у меня есть эта структура страницы:

/posts
/another-page/posts

По сути, это две разные страницы со списком разных сообщений, хотя название (сообщения) одинаковое. Две страницы должны использовать разные шаблоны. Для первой страницы «сообщений» я просто создаю файл с именем page-posts.php, и он выбирается автоматически. Как сделать то же самое для другой страницы «сообщений»?

Является ли единственным решением создать шаблон и вручную выбрать его из раскрывающегося списка на странице администратора? Нет ли способа изменить слаг, не влияя на URL-адрес?

3
Carlo 16 Окт 2014 в 02:57

2 ответа

Вы можете попробовать подключиться к действию шаблона страницы, проверить свою пользовательскую структуру URL и, если она существует, вывести свой собственный шаблон.

 add_filter( 'page_template', 'custom_page_template' );

 function custom_page_template( $page_template )  {
     $url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];

     if ( false !== strpos( $url, '/another-page/posts' ) ) {
         $page_template = dirname(  __FILE__  ) . '/path_to_my_template.php';
     }

     return $page_template;
 }
0
Leland 29 Сен 2016 в 08:11

Вы можете создать два файла шаблона с именем page-{id}.php для каждой страницы. Это будет обрабатывать обе страницы для вас.

Раздел страницы иерархии шаблонов

Идентификаторы для каждой страницы будут уникальными. Поэтому, когда вы выбираете «Редактировать» в области WP-Admin, посмотрите на URL-адрес, и вы сможете найти идентификатор.

/wp-admin/post.php?post=6163&action=edit

Для этой страницы мой идентификатор страницы будет 6163. Таким образом, имя шаблона будет page-6163.php.

Ура

1
justindgivens 16 Окт 2014 в 03:09
Так что нет никакого способа продолжать делать с slug?
 – 
Carlo
16 Окт 2014 в 12:36
Были бы шаблоны другими, если бы это была родительская страница, а не дочерняя?
 – 
justindgivens
20 Окт 2014 в 18:51