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

时间:2015-02-10 17:11:25

标签: php wordpress templates

我正在寻找为WordPress中的博客页面创建自定义布局的最佳解决方案。

您通常会在admin中的“模板”元框中选择自定义页面模板来更改页面布局,但这对静态博客页面不起作用。

默认情况下,WordPress模板层次结构正在寻找home.php然后再显示index.php,它根本不会检查自定义页面模板。 View the Template Hierarchy here. WordPress codex还注意到有关博客页面的信息:

请勿对此页面使用自定义页面模板。模板文件home.php或index.php将用于在主题中生成此页面。

我个人觉得这很奇怪。如果有一个页面,我希望有不同的布局,那就是博客列表。

我目前唯一的解决方案是创建一个名为“Blog Layouts”的新元数据集。然后,我的home.php根据元数据设置的值加载自定义模板部件。虽然我确信这会起作用,但是知道WordPress提供了自己的用于设置页面模板的元数据,这感觉有些神奇。

如果有人有更好的建议,我很高兴看到它们。

3 个答案:

答案 0 :(得分:1)

您可以利用模板元框。

<?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(); ?>

答案 1 :(得分:0)

如果网站只有网页和帖子,那么只要你有一个page.php文件页面,就可以编辑index.php。无需创建另一个模板文件。

答案 2 :(得分:0)

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

http://codex.wordpress.org/Category_Templates

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