月亮代表我的心

个人博客,跟月亮无关,跟代表无关,无关谁的心

简单说说WordPress函数add_filter的使用

闲话不多说,看图,以下是WordPress所创建的一个“睡否?”Page,其中描红的区域是通过WordPress函数add_filter追加的内容。


下面是这个Page在WordPress后台的编辑页的截图,上下对照可以发现,其中并没有上图描红区域的内容。

描红区域的内容是由add_filter函数实现的,WordPress允许你在数据库读取数据之后,或者将数据提交到数据库之前,通过add_filter函数修改这些数据,然后才继续往后的操作,如数据的显示、保存。

下面是add_filter函数的简单说明(更详尽说明,敬请移步至官网Plugin API):

1
add_filter( $tag, $function_to_add, $priority, $accepted_args );

$tag :过滤的目标,即需要修改的数据,如内容:the_content

$function_to_add :处理函数,即通过此函数,处理需要修改的数据

$priority :优先级,默认值为10

$accepted_args :接受参数的个数,默认值为1

接着简单说说add_filter的用法:

1)创建处理函数addContent:

1
2
3
4
5
6
7
function <span style="color: #ff0000;">addContent</span>($content = "") {
    //需要修改的内容,通过参数$content获得
    //在这里,可以实现你自己的一些操作,以下是一个简单示例
    $data = '这是要添加的数据';
    $content .= $data; //添加到原来的内容后面
    return $content;
}

2)调用add_filter函数,需要注意的是,必须在数据显示、保存等操作之前进行调用:

1
add_filter("the_content", <span style="color: #ff0000;">addContent</span>);

附)当执行“睡否”页(http://www.yueliangdaibiaowodexin.com/shuifou)时,add_filter函数才被调用:

1
2
3
if(strpos($_SERVER['REQUEST_URI'] , "<strong>shuifou</strong>") > 0 ) {
    add_filter("the_content", <span style="color: #ff0000;">addContent</span>);
}

怎么样?很简单吧:)

点赞
  1. 蚁族说道:

    $tag :过滤的目标,即需要修改的数据,如内容:the_content
    这个有点不大明白,the_content 是必须是函数吗? 还是其他的随便自定义的函数呢?
    the_content 是指函数返回值吧???这样理解没错吧?

    1. miracle说道:

      $tag 这个参数是字符串类型,指定要过滤的是哪部分的数据,如the_content代表内容,the_title代表标题,这些名称都是由WP设定的。

      1. 蚁族说道:

        嗯,今天查资料查到了
        所有能过滤的钩子都在这里
        http://codex.wordpress.org/Plugin_API/Filter_Reference
        吃了E文不好的亏啊.
        叹:找资料,网上大多都是千篇一律,真不知道这些所谓写博的同学是在干嘛,而且搞了半天整出来个全改版 关站都有可能,用wp的见过很多同学都是用不长久,一会就换,一会就换..纯粹是没头的苍蝇一样.
        建议这种同学多像博主取经.鼓掌:)

      2. 蚁族说道:

        博主对这个wp的钩子机制有过多研究吗?它是怎么定义和实现的呢?源码我看不懂,如果博主对这方面了解,可不可以用自己的话给我描述下原理呢?多谢博主回复.以后常来 嘿嘿..

        1. miracle说道:

          我是这样理解的,在WP的工作流程中,定义了一系列的钩子,让插件或者主题等的开发者可以根据需要“钩”进去,即WP执行到某一阶段时触发你自己所定义的函数,从而改变WP的工作流程或结果

          1. 蚁族说道:

            嗯,是这样的,这几天想研究下,这个plugin.php将其放到自己项目中去,这样自己的项目以后也非常好维护,也有一定的规范性了,不知道博主对这个感不感兴趣啊?嗯去好好看看这个具体的源码先,多谢博主!:)

            1. 蚁族说道:

              额,这个wp的钩子机制已经抽出来,可以放到自己的php项目中去了,我博客有记载,其实也听简单的 用到的观察者模式 共同学习交流 :)

  2. kuhum说道:

    这个看不明白。看来有时间得了解一下PHP知识了。

  3. 小A说道:

    遗憾自己没有学过啊~

  4. CoderMAX说道:

    本来还想抢一个沙发的,谁知道这里人气这么旺,感谢老兄耐心讲解!

  5. miracle说道:

    @Dio
    我现在对技术的学习开始失去兴趣,PHP学了个半桶水……

  6. 九成说道:

    很强大!!

  7. Dio说道:

    不错不错.下学期学PHP要好好研究一下php先

发表评论

电子邮件地址不会被公开。 必填项已用*标注