[英]Assigning custom templates to a static blog page
我正在寻找为WordPress中的博客页面创建自定义布局的最佳解决方案。
通常在admin的“模板”元框中选择自定义页面模板来更改页面布局的地方,这不适用于静态博客页面。
默认情况下,WordPress模板层次结构先寻找home.php,然后寻找index.php来显示,它根本不检查自定义页面模板。 在此处查看模板层次结构。 WordPress规范也对博客页面进行了说明:
不要为此页面使用自定义页面模板。 模板文件home.php或index.php将用于在主题中生成此页面。
我个人觉得这很奇怪。 如果只有一页,我希望有不同的布局可用,它是博客列表。
我目前唯一的解决方案是创建一个名为“博客布局”之类的新metabox。 然后,我的home.php根据metabox设置的值加载自定义模板部分。 尽管我确定这可以正常工作,但是知道WordPress提供了它自己的用于设置页面模板的metabox时,感觉有点不客气。
如果有人有更好的建议,我真的很高兴阅读它们。
您可以利用模板metabox。
<?php
function get_blog_template() {
// Get the template metabox value from the page used as post archive.
$template_file = get_post_meta(get_option('page_for_posts'), '_wp_page_template', true);
if ($template_file == 'templates/blog-small.php') {
get_template_part('templates/blog', 'small');
} elseif ($template_file == 'templates/blog-wide.php') {
get_template_part('templates/blog', 'wide');
} else {
echo 'Sorry, no template is found';
}
}
?>
然后在home.php中调用该函数
<?php get_blog_template(); ?>
如果站点只有页面和帖子,那么只要您有用于页面的page.php文件,就可以只编辑index.php。 无需创建另一个模板文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.