wordpress CMS主题 微信
  • 全部教程
  • Home > wordpress CMS主题制作 > wordpress过滤器在wordpress主题开发中的应用

    wordpress过滤器在wordpress主题开发中的应用

    高时银博客 wordpress CMS主题制作 点击: 1,280 次 0 1

    昨天,我们介绍过wordpress动作勾子在wordpress主题开发中的应用。本章,我们再来介绍一个跟wordpress勾子动作相似的函数——wordpress过滤器。wordpress过滤器函数在应用和语法上跟wordpress动作勾子极其相似。它们的不同之处在于:wordpress动作勾子是向wordpress勾子添加动作函数,而wordpress过滤器函数则是修改wordpress过滤器中已经存在的变量的值。

    跟wordpress勾子一样,wordpress过滤器也有2个基本函数:创建过滤器函数apply_filter()和修改过滤器函数add_filter():

    apply_filters($tag,$value);
    //$tag 必需、你想创建的过滤器的名称
    //$value 必需,挂在这个过滤器可以修改的值(参数)

    add_filter($tag,$function_to_add,$priority,$accepted_args);
    //$tag 必需,钩子名
    //$function 必需,调用的函数
    //优先级
    //接受参数数量,默认1

    跟do_action()动作勾子不同的是,apply_filter()的2个参数是必需的,因为过滤器的功能是修改变量的值,所以必需传递一个或多个变量。同时,add_filter()往过渡器上挂函数时,这些函数必需有个返回值。下面以一个实例来解说:

    ssmay主题

    //通过多说服务器加速Gravatar头像
    function mytheme_get_avatar($avatar) {
    $avatar = str_replace(array("www.gravatar.com","0.gravatar.com","1.gravatar.com","2.gravatar.com"),"gravatar.duoshuo.com",$avatar);
    return $avatar;
    }
    add_filter( 'get_avatar', 'mytheme_get_avatar', 10, 3 );

    上面这段代码是说让wordpress网站用户头像使用多说服务器镜像中的Gravatar头像。我们知道,最近一段时间(可能有一年多的时间了),Gravatar头像一直打不开,这不仅影响了网站前台的美观,也影响了网站的打开速,只要通过这个段代码就可以解决这个问题。

    在wordpress程序includes/pluggable.php的2165(wordpress4.2版),我们可以看到“ get_avatar”这个过滤器,上面这段代码就是修改这个过渡器,主要是修改这个过滤器中的$avatar 这个变量,我们可以在 pluggabl.php 文件的2210行找到这个变量,代码如下:

    $avatar = apply_filters( 'pre_get_avatar', null, $id_or_email, $args );

    if ( ! is_null( $avatar ) ) {
    /** This filter is documented in wp-includes/pluggable.php */
    return apply_filters( 'get_avatar', $avatar, $id_or_email, $args['size'], $args['default'], $args['alt'], $args );
    }

    我们这个案例的代码,主要是修改这个变量$avatar ,$avatar变量中是从gravatar官网服务器来获取gravatar用户头像,我们这里修改成从多说服务器中获取gravatar头像,因为多说有一个wordpress评论插件——多说插件,这个插件里的用户头像就是使用gravatar头像在多说服务器镜像缓存。

    好了,有关wordpress过滤器就介绍到这里,这个我们在wordpress主题开发中也是经常用到的。


    文章作者:高时银博客
    本文地址:http://wanlimm.com/77201507044573.html
    版权所有 © 转载时必须以链接形式注明作者和原始出处!

    目前还没有评论。赶快来坐沙发吧。

    发表评论