Wordpress 自动为与另一个同名的子页面选择模板

Wordpress 自动为与另一个同名的子页面选择模板,wordpress,custom-wordpress-pages,Wordpress,Custom Wordpress Pages,在wordpress网站中,我有以下页面结构: /posts /another-page/posts 基本上,它们是两个不同的页面,列出不同的帖子,尽管名称(帖子)是相同的。这两个页面应该使用不同的模板。对于第一个“posts”页面,我只创建了一个名为page-posts.php的文件,它是自动选择的。如何在其他“帖子”页面上做同样的事情 是创建模板并从管理页面的下拉列表中手动选择模板的唯一解决方案吗?有没有办法在不影响url的情况下更改slug?您可以为每个页面创建两个模板文件page-{i

在wordpress网站中,我有以下页面结构:

/posts
/another-page/posts
基本上,它们是两个不同的页面,列出不同的帖子,尽管名称(帖子)是相同的。这两个页面应该使用不同的模板。对于第一个“posts”页面,我只创建了一个名为page-posts.php的文件,它是自动选择的。如何在其他“帖子”页面上做同样的事情


是创建模板并从管理页面的下拉列表中手动选择模板的唯一解决方案吗?有没有办法在不影响url的情况下更改slug?

您可以为每个页面创建两个模板文件page-{id}.php。这将为您处理这两个页面

每个页面的ID都是唯一的。因此,当您从WP Admin区域选择Edit时,查看URL,您可以找到ID

/wp-admin/post.php?post=6163&action=edit
对于此页面,我的页面ID将6163。因此,模板名称将为page-6163.php


干杯

您可以尝试挂接到页面模板操作,检查您的自定义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;
 }

所以根本没有办法继续使用slug?如果它是父页面而不是子页面,模板会有所不同吗?