繁体   English   中英

将自定义模板分配给静态博客页面

[英]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。 无需创建另一个模板文件。

您可以为特定类别创建特定模板。

http://codex.wordpress.org/Category_Templates

最好的选择是将要样式设置为不同的帖子分类,然后为该类别创建模板。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM