2017-09-20

猎数博客

数据挖掘,机器学习

WordPress Filter之概论

作者:江航 / 2011-05-22 / (阅读 1,719 次) /



概念

WordPress中的Filter是一些函数,这些函数在数据写到数据库之前或者发送到浏览器之前被调用,完成一些文字的修改和过滤功能。 WordPress二次开发者可以自行注册添加Filter,WordPress会根据各个Filter的优先级来顺序调用,从而达到扩展 WordPress,完成开发者指定功能的目的。

声明和注册

Filter实际上只是一些函数,在编写函数之前,要确定这个Filter属于哪一类,不同类的Filter,所需要的参数是不一样的,缺省情况下,参 数个数为一个。在WordPress中,Filter的类名是通过Tag来指定的,每个Tag下可以定义很多Filter,每个Filter又可以有自己 的优先级。Filter是通过Tag来调用的,每次调用,注册在该Tag下的所有的Filter都会被运行,这些Filter的调用顺序是根据注册时定义 的优先级来确定的,优先级数值低的先执行,优先级数值高的后执行。   要知道具体某一类Filter的参数是什么,需要先知道该类Filter的Tag名,不同的 Tag在不同的时候会被调用,通过查阅WordPress文档找到添加Filter的适当地方。然后在WordPress的源码中搜索该Tag的名字,查 找某个已加入该Tag的函数或者说是Filter,确定函数参数以后就可以编写自己的实现函数了。注意要在函数中返回处理过后的内容以供其他的 Filter继续处理。   当Filter定义完成以后,通过Add_filter这个函数将Filter添加到整个WordPress系统中。其中Add_filter函数的声明是这样的:

function add_filter($tag, $function_to_add, $priority = 10, $accepted_args = 1)

其中第一个参数是Tag名,也就是上面提到的Filter类名,第二个参数是实现具体功能的函数名,第三个参数是优先级,缺省为10,第四个参数是改Filter接受参数的个数,缺省为一个。   如果想让Filter在比较后面调用,可以将第三个参数设得比10大,那么一般情况下,该Filter会在WordPress自带Filter都调用完以后再调用这个新加的Filter。反之则可以把优先级设得比10小。

实例

作为一个例子,假设我们想要在每篇文章下面加上这篇文章的链接地址,声明一下版权信息。也就是在每篇文章后面加上这么一句话:

“本文地址:http://xxx.xxx.xxx/ 转载请注明”

通过查阅WordPress文档知,每个单篇文章在发送到浏览器之前要调用Filter the_content。于是这个Filter可以加到Tag the_content里面。并且通过查阅一个该Tag里面的函数知,这类Filter只有一个参数进来,那就是文章的内容本身。这样该Filter就比 较清楚了,只要在文章内容的最后添加上面的一行声明就好了。另外,为了保证该Filter在最后被调用,在注册该Filter的时候,把优先级数字设得稍 微大一点。具体代码如下:

function my_copyright($content)
{
$content .= “本文地址:http://xxx.xxx.xxx/ 转载请注明”;
return $content ;
}
add_filter(“the_content”,my_copyright,15);
当然,这只是个最简单的例子,要实用还需要一些改动,但是添加一个Filter的过程基本上就是这样

 

本文被收录在百度百科Filter词条下。



Wordpress一览无余,源码面前没有秘密,wordpress的函数调用库,展示wordpress页面打开过程中十几万个函数调用,学习WP开发的绝佳资源。点击这里进入

本文地址: http://www.bagualu.net/wordpress/archives/548 转载请注明






相关文章

  • 再说Wordpress中添加小挂件widget( 5,869 )
  • Wordpress中添加自定义参数( 3,411 )
  • WordPress代码之apply_filters( 3,272 )
  • 微博分享按钮( 3,226 )
  • WordPress版权声明插件( 3,199 )
  • wordpress函数调用库( 2,634 )
  • 通过wpdb访问WordPress数据库( 2,443 )
  • 通过wordpress debug插件,显示filter调用过程( 2,404 )
  • 用Wordpress做相册( 2,398 )
  • WordPress 代码之 add_filter( 2,337 )
  • Leave a Reply

    您必须登录以发表评论,

    沪ICP备11036560号
    联系我: jianghang at bagualu.net