De-bloating the page classes

时间:2017-07-12 作者:Chris Pink

Wordpress中的标准page类如下所示;

<body class="page-template page-template-page-templates page-template-page-standard 
page-template-page-templatespage-standard-php page page-id-7 page-parent">
如果你问我,这有点夸张,我的意思是谁将建立一个css类.page-template-page-templatespage-standard-php ? 我喜欢人类可读的代码。

所以我的问题是如何重写核心函数body_class()?

这是“对我自己问题的回答”,有点混乱。我查找了这些信息,但没有发现这些信息对某人如此有用。

1 个回复
最合适的回答,由SO网友:Chris Pink 整理而成

答案是这样的;我想对我来说最有用的部分是这样读的东西;

<body class="page my-page page-id-28 template-mypage">

哪里page 是职位类型,mypage 是页面slug,然后是id,最后是模板的优雅形式。(我的模板都是表单的page-templates/page-mypage.php 因此,您需要在这里放置自己的结构—大多数代码都在清理模板段塞。

将其放入函数中。php

//Modify body_class()
function modify_body_class( $classes ) {

global $post;

// Empty class array
$classes = array();

if (is_front_page()) {
    $classes[] = \'home\';
}

// add post type
// add slug
// Add page ID
// Add template slug (first sanitise)
$template_slug = get_page_template_slug();
if ($template_slug) {
    $template_slug = str_replace(\'page-templates/\', "", $template_slug);
    $template_slug = str_replace(\'.php\', "", $template_slug);
    $template_slug = str_replace(\'page-\', "template-", $template_slug);
} else {
    $template_slug = null;
}


if ( isset( $post ) ) {
    $classes[] = $post->post_type;
    $classes[] = $post->post_name;
    $classes[] = $post->post_type .\'-id-\'.$post->ID;
    $classes[] = $template_slug;
}
return $classes;
}

add_filter( \'body_class\', \'modify_body_class\' );

结束

相关推荐

当返回值为空时,Apply_Filters为什么要返回非空字符串?

因为这个把我的键盘弄坏了。进行了正确的安装,将数据库上载到新的MySQL,并一直在正确使用子主题。但有件事困扰着我,我想不出来。在我的新安装上(ver2.whowhatwhy.com) 我故意将一些小部件留空。我想,当阅读default-widgets.php wp中的文件包括在该小部件上不会显示标题元素。相反,显示标题小部件是因为,出于某种原因,传递的值apply_filters 是一个空格,而不是空白值$instance[\'title\'] 为空。$title = apply_filters( \'