根据不同客户端或浏览器生成特定的class,根据当前页面属性,生成特定的class,等等。
body_class
1.什么是body_class
body_class是为Wordpress主题开发者准备的一个标签,它会根据主题为body或者sidebar添加个性化的class。
WordPress的body_class可以生成的class值:
.rtl {}
.home {}
.blog {}
.archive {}
.date {}
.search {}
.paged {}
.attachment {}
.error404 {}
.single postid-(id) {}
.attachmentid-(id) {}
.attachment-(mime-type) {}
.author {}
.author-(user_nicename) {}
.category {}
.category-(slug) {}
.tag {}
.tag-(slug) {}
.page-parent {}
.page-child parent-pageid-(id) {}
.page-template page-template-(template file name) {}
.search-results {}
.search-no-results {}
.logged-in {}
.paged-(page number) {}
.single-paged-(page number) {}
.page-paged-(page number) {}
.category-paged-(page number) {}
.tag-paged-(page number) {}
.date-paged-(page number) {}
.author-paged-(page number) {}
.search-paged-(page number) {}
2.如何使用单螺杆泵body_class
>
就是这么简单!
WordPress官方用例:
// add category nicenames in body and post class
function category_id_class($classes) {
global $post;
foreach((get_the_category($post->ID)) as $category)
$classes[] = $category->category_nicename;
return $classes;
}
add_filter('post_class', 'category_id_class');
add_filter('body_class', 'category_id_class');
3、为什么要使用body_class
有一种情况:如果你把主内容区域的宽度设定为统一的像素值或者百分比的时候,如果有的页面右侧栏,有的页面没有侧栏,你是不是得考虑,改变这些在CSS中已经设定好的值并且还得一个PHP一个PHP的改呢?
下面的方案是你只需要针对有无侧栏写两种主内容区域的宽度值,然后用body_class帮你实现!
为右侧栏的页面添加特定的body_class:
add_action('wp_head', create_function("",'ob_start();') );
add_action('get_sidebar', 'my_sidebar_class');
add_action('wp_footer', 'my_sidebar_class_replace');
function my_sidebar_class($name=''){
static $class="withsidebar";
if(!emptyempty($name))$class.=" sidebar-{$name}";
my_sidebar_class_replace($class);
}
function my_sidebar_class_replace($c=''){
static $class='';
if(!emptyempty($c)) $class=$c;
else {
echo str_replace('
ob_start();
}
}
只有一个侧栏的用法:
add_action('wp_head',create_function("",'ob_start();'));
add_action( 'get_sidebar', create_function('','echo str_replace("
Sellya是一个有多种皮肤、支持自由配色的Wordpress商城主题,支持Rich snippets.