【问题标题】:Assigning custom templates to a static blog page将自定义模板分配给静态博客页面
【发布时间】:2015-02-10 17:11:24
【问题描述】:

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

您通常会从管理员的模板元框中选择自定义页面模板来更改页面布局,但这不适用于静态博客页面。

默认情况下,WordPress 模板层次结构是寻找 home.php 然后 index.php 显示,它根本不检查自定义页面模板。 View the Template Hierarchy here. WordPress codex 也注意到博客页面的这一点:

不要为此页面使用自定义页面模板。模板文件 home.php 或 index.php 将用于在 Theme 中生成此页面。

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

我目前唯一的解决方案是创建一个新的元框,称为“博客布局”。我的 home.php 然后根据元框设置的值加载自定义模板部分。虽然我确信这会奏效,但知道 WordPress 提供了它自己的元框来设置页面模板,感觉有点怪异。

如果有人有更好的建议,我真的很高兴阅读它们。

【问题讨论】:

    标签: php wordpress templates


    【解决方案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(); ?>
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 该站点相当复杂,index.php 不可用。目标是能够从管理员中选择多个模板,就像自定义页面模板一样,只有自定义页面模板不适用于静态博客或首页。
      • 您是否尝试过创建自定义页面模板并使用 WP_Query 查询您关注的帖子。我不确定我是否在追随你的追求。也许您应该更具体地提出您的问题。
      【解决方案3】:

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

      http://codex.wordpress.org/Category_Templates

      您最好的选择是对您希望以不同样式设置的帖子进行分类,然后为该类别创建一个模板。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-06
        • 2019-11-30
        • 1970-01-01
        • 2015-07-19
        • 1970-01-01
        • 1970-01-01
        • 2012-09-18
        • 1970-01-01
        相关资源
        最近更新 更多