WordPress不会为父页面选择页面模板

【WordPress不会为父页面选择页面模板】我正在开发WP主题, 而这个问题使我发疯…
对于我创建的每个页面(父页面), WP选择index.php作为模板。我知道WP模板层次结构, 但是使用page.php, page- $ slug.php还是page- $ id.php都没关系, 我也尝试过使用:

< ?php /* Template Name: My Template */ ?>

并在编辑器中为页面分配此模板。
为了调试起见, 我还迷上了template_include, 如下所示:
add_filter( 'template_include', 'check_template_selection', 99 ); function check_template_selection( $template ) { global $post; echo "Post ID: " . $post-> ID . "< br/> "; echo "Template File:" . $template . "< br/> "; echo is_page() ? "YES" : "NO"; return $template; }

对于我检查的每个页面URL(例如:http://example.com/mypage), 我都会得到:
职位ID:模板文件:/nfs/c11/h05/mnt/205383/domains/example.com/html/wp-content/themes/mytheme/index.php否
我尝试过删除页面并再次创建它们, 但这是相同的。事实是, 它对于子页面很好用。例如:http://example.com/mypage/mychildpage显示:
职位ID:589模板文件:/nfs/c11/h05/mnt/205383/domains/example.com/html/wp-content/themes/mytheme/page-mychildpage.php是
我正在使用WP 4.4.2, ACF PRO 5.3.6.1, 自定义帖子类型UI 1.2.4和Instagram Feed Pro Personal 2.0.4.1。没有其他插件。无论如何, 我都尝试将它们全部停用, 但均未成功。我从零开始开发了主题, 之前已经做过几十个主题, 而且之前从未遇到过这个问题…
这是我的.htaccess, 我的永久链接已正确配置为/%postname%/, 没有类别库。
# BEGIN WordPress< IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] < /IfModule> # END WordPress

因此, 请提供任何关于我在此处缺少什么的建议或提示, 将非常感激。感谢大伙们!
编辑: 经过数小时的深度搜索(非常感谢John Blackbourn的Query Monitor插件), 我发现我的父页面匹配错误的重写规则, 所以现在我想这与重写规则优先级有关。
父页面URL不匹配:http://example.com/about
WordPress不会为父页面选择页面模板

文章图片
WordPress不会为父页面选择页面模板

文章图片
子页面网址的正确匹配:http://example.com/about/about-child
WordPress不会为父页面选择页面模板

文章图片
WordPress不会为父页面选择页面模板

文章图片
#1 几年后, 但我遇到了几乎相同的问题。像你一样使用Query Monitor插件也帮助我弄清楚了。
我今天早些时候所做的是创建一个自定义分类法, 命名为year。我的想法是按制造车辆的年份将我的帖子(现在是我客户的站点的车辆)分组。
但是, 像你一样, 当我进入任何顶层页面时, 我都被定向到index.php模板文件而不是page.php模板文件。
通过使用Query Monitor插件, 我看到了与你完全相同的结果。我匹配的查询是year = about。
我删除了自定义年份的分类法, 然后通过WordPress管理员设置> 永久链接和voila保存了永久链接, 从而刷新了我的永久链接, 现在我的顶级页面将转到正确的page.php模板文件。

    推荐阅读