我用这篇文章来简单介绍一下如何创建一个filter。
用简单的话来说,就是调用apply_filters函数。
然后,我们来复杂点说:
如果你调用了apply_filters('my_own_message', $mess);,那么,你就创建了一个名字为my_own_message的filter了。
那么这个my_own_message的含义是什么呢?按照我个人的理解来说,就是将来有一群接受一个参数$mess的函数,可以被调用。而且,就恰恰会在你调用apply_filters的地方被调用。
再举个不恰当的例子,就好像你是一个小朋友,你从你大款同学那里借了一个变形金刚,爱不释手,但是终于玩够了,要还了,又觉得还是不爽,这时候,你喊了一嗓子,“要玩变形金刚的排队过来玩,玩完还给那款爷”,小朋友们兴高采烈,但是秩序井然地过来玩了,当然,你们这么一坨人玩过了,那个玩意儿能完好无损的可能性也很小了,不是少了条胳臂缺了条腿,就是脸上多了两撇小胡子……最后,那可怜的变形金刚面目全非的回到了大款小朋友的手上……
你喊那一嗓子,就好像是apply_filters了,然后那些小朋友就是名字为“要玩变形金刚”这个filter上的函数,那个变形金刚就是那个传递给函数的参数,缺胳臂少腿,多了小胡子,就是这些filter们作用在变形金刚这个参数上的效果,最重要的是,这个变形金刚最终还给了那个大款小朋友,也即filter们必须要把拿来的东西返回去。
哈哈……又胡扯了一番……
举个例子:
下面是某主题的footer.php
<p>
<a href="http://wordpress.org/">WordPress</a> : <a href="http://validator.w3.org/check?uri=referer">xhtml</a> :
<br /><a href="<?php bloginfo('rss2_url'); ?>">Entries (RSS)</a>
and <a href="<?php bloginfo('comments_rss2_url'); ?>">Comments (RSS)</a>.
<?php print_extra_footer_message(); //注意这个函数?>
<!-- <?php echo get_num_queries(); ?> queries. <?php timer_stop(1); ?> seconds. -->
</p>
</div>
然后,这是某主题的functions.php节选
function print_extra_footer_message($message='') {
echo apply_filters('extra_footer_message',$message);
}
?>
好,我创建了一个filter了。
最后,思考题:
1. filter到底有什么用?
2. 对一个插件作者来说,filter意味着什么?
3. 对于一个主题作者来说,filter又意味着什么?
怎么还有课后作业啊,太搞了吧
[器 听 监] 这三个字(从右向左读)是被屏蔽的????
晕死...
哈哈,原来有这么好玩的事情啊,可能是梦游的主机上加的一种保护措施吧~~你可以直接用listener这个词,更准确~~
实际上filter就是产生一个事件触发器
它告诉WP,如果因为穷(达到某个条件的filter)而需要借钱(需要处理的内容val),来我这里吧~~~,但是法律规定你要还的(虽然还多少或者还不还都不知道。。。
本质上:
1、当你提供一个filter,就是告诉wp,别人有机会插手处理你的内容。
2、当你调用一个filter,就是告诉wp,我要处理别人开放出来给我的内容。
如果学习过网络通讯协议,那它就叫 listen
filter 在 window 技术体系里叫 event
HTTP 错误 900.1 - 您发送的信息中包含特定关键字,发送失败!
晕...还想讲下啥是filter的
完全没有懂的路过~LZ不怕吖我菜鸟一个~
只知道filter的大小能控制feed内容的显示顺序, 其他的就不知了...
是吗?怎样控制feed内容的显示顺序?你用过相关的filter做过应用么?可以说出来大家交流下……
应用谈不上, 就是简单的修改. betterfeed 插件有时候总显示在相关文章(simpletag插件实现)的前面, 我觉得在 reader 里面不美观. 然后把 betterfeed 里面的 addfilter() 的数值调大, 超过 simpletag 的为止, 似乎就可以了. 具体为什么我也不清楚, 是不是数值越小, 优先级越高, 越先调用呢?
原来如此,那个数字是优先级。越小优先级越高,默认的优先级一般是10。有些插件一定要抢先执行的,比如coolcode,把值设成-9999。这个东西就取决于插件的用途和开发者的觉悟了。你说的两个filter,都是采用简单追加的方式改变内容的,所以优先级就决定了他们添加的内容出现的顺序。此外,改变内容的方式还有替换,如coolcode,还有更加复杂的方式,就看你的想象力了。
看来看去,没看明白。
完了,我表达能力太差了……-_-b
本来有点明白了,看那个变形金刚的比喻,又糊涂了= =
你应该告诉我你的想法的演变过程,比如你本来理解的是啥,后来看了我的比喻,把哪些地方搞糊涂了,这样,我就知道我哪里没讲清楚了。当然,也不排除我自己没理解的可能性。
filter第一感觉是滤镜。。然后一看像是说一个过滤器。看了几个评论,好像又是一种控制变量的东西
话说你这个胡扯技术.. 真真真太让我钦佩了.. -_-##
飘过.. 飘过..
filter 很无聊的说..
这个……这个……
沙发沙发沙发..
成功消灭掉沙发!!
沙发党……
我的感觉就是过滤器,英文filter这个词还是挺准确的吧……