为什么《十二条》中的全角模板将这么多类打包到Body类属性中?

时间:2015-01-14 作者:OrganicCorridor

我创建了一个页面,并在212主题中选择了“全宽页面模板,无侧边栏”选项。查看的页面具有以下正文标记:

<body class="page page-id-2 page-template page-template-page-templates page-template-full-width page-template-page-templatesfull-width-php logged-in admin-bar full-width custom-font-enabled single-author customize-support">
我想创建一个具有自定义全宽页面的子主题,但我不确定为什么需要包含这么多类似的类,或者创建它们的最佳实践是什么。其中大多数似乎并没有实际用于页面样式设计。例如,我看不到页面模板page templatesfull width php的用法。也许这是一个bug。

2 个回复
最合适的回答,由SO网友:Milo 整理而成

这些类由body_class 函数,插件可以对其进行过滤以添加自己的类。您不需要(也不应该)将类harcode到模板中的body标记中,只需在body标记中添加该函数即可:

<body <?php body_class(); ?>>

SO网友:Michael

例如,2112添加了CSS类.full-width 通过functions中的filter函数访问body\\u类。当“全宽页面模板,无侧边栏”模板中的buld被使用时,主题的php。从2012年起的对应代码:

if ( ! is_active_sidebar( \'sidebar-1\' ) || is_page_template( \'page-templates/full-width.php\' ) )
    $classes[] = \'full-width\';
此CSS类在样式中使用。css来格式化全宽页面。为了简化格式设置,您可能需要考虑对页面模板执行同样的操作。

子主题的可能代码(基于自定义页面模板的文件名和位置-示例/page-templates/custom-full-width.php):

function wpse_174855_twentytwelve_child_body_class( $classes ) {
    if( is_page_template( \'page-templates/custom-full-width.php\' ) ) {
        $classes[] = \'full-width\';
    }
    return $classes;    
}
add_filter( \'body_class\', \'wpse_174855_twentytwelve_child_body_class\', 20 );

结束

相关推荐

get page templates

我有这个问题,我需要获得所有页面模板。我知道有很多方法可以根据他们的名字得到他们。我知道我可以包含一个页面模板,但我正在尝试将它们包含在索引页面的循环中。我刚刚安装了2012主题,修改了标题以包含我的脚本。我使用了Milo提供的一个功能,将所有帖子和页面加载到正在运行的主页中。现在,我需要包括所有模板,甚至那些我不知道其名称的模板。在抄本中,我发现了一个函数get_page_templates() 这似乎不再有效了。它给出了这个片段 <?php $templates = get_p