是的,有一些改进。
不必要地打开和关闭PHP标记是一种浪费时间的行为,使其更难阅读,并且意味着键入更多的PHP Alt/short样式语法不会很好地与编辑器配合使用。改用{},IDE甚至可以帮助您自动键入右大括号
Query\\u帖子,永远不要使用它。WP\\u查询或pre\\u get\\u posts筛选器中没有未包含的有效用例,请不要放置尾随?>在PHP文件的末尾,应使用PHP注释而非HTML注释,而不是包含部分。查询后,您没有尝试进行清理。您从未检查是否找到任何页面。您正在使用模板名称中的页面,这可能会与模板继承权发生冲突,并且在某些情况下可能无法加载您认为的模板,因此让我们开始:<?php
// grab pages
$args = array( \'post_type\' => \'page\' );
$query = new WP_Query( $args );
// did we actually find posts?
if ( $query->have_posts() ) {
// while there are still posts
while ( $query->have_posts()) {
// setup the current post data/globals
$query->the_post();
// grab its ID
$id = get_the_ID();
if ($id == 5) {
get_template_part( \'page_special\' );
} else {
get_template_part( \'page_all\' );
}
}
// cleanup after ourselves
wp_reset_postdata();
} else {
// no pages were found!
}
现在,您可以使用get\\u template\\u part进一步扩展它。首先,我会将其替换为使用“内容”而不是“页面”作为主标识符。因此:
第页,共页。php成为内容。php第\\u页特别信息。php变得内容特殊。请注意-not的用法。
然后,我将修改加载内容模板的代码,如下所示:
get_template_part( \'content\', get_the_ID() );
例如,如果您登录到第4页,它将尝试加载content-4。php,如果不存在,它将加载内容。php。您可以传入任何您想要的作为第二个参数的内容,它还可以查看子/父主题。将其绑定到自定义字段/帖子元,您可以进一步扩展它