Chinaunix首页 | 论坛 | 博客
  • 博客访问: 345381
  • 博文数量: 71
  • 博客积分: 2129
  • 博客等级: 大尉
  • 技术积分: 835
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-18 16:03
文章分类

全部博文(71)

文章存档

2014年(22)

2013年(18)

2012年(24)

2010年(7)

我的朋友

分类: PHP

2014-03-19 14:28:03

根据不同客户端或浏览器生成特定的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("     ?> 

再就是考虑浏览器兼容了,你可以用body_class为不同的客户端浏览器定义不同的class!

Coolwp Sellya add-on for Taiwanese 是一个Wordpress主题的附加插件。
Sellya是一个有多种皮肤、支持自由配色的Wordpress商城主题,支持Rich snippets.
了解更多Sellya的情况
阅读(1060) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~