在对挨踢茶馆进行细小的网站优化的时候,想更改其feed信息,根据网上提示,在function.php下加入如下代码,但是执行不成功,会弹出“Fatal error: Call to undefined function: add_filter()”错误。
<pre>function feed_copyright($content) { if(is_single() or is_feed()) { $content.= '<div> &raquo; 转载请注明来源: &raquo; <a rel="bookmark" title="'.get_the_title().'" href="'.get_permalink().'">'.get_the_title().'</a></div>'; $content.= '<div> &raquo; 本文链接地址:<a rel="bookmark" title="'.get_the_title().'" href="'.get_permalink().'">'.get_permalink().'</a></div>'; } return $content; } add_filter ('the_content', 'feed_copyright');</pre>
但是和之前遇到的情况一样,发现在function.php下加入了add_filter函数后再打开网页就会出现如下错误:
Fatal error: Call to undefined function: add_filter()
表示系统无法识别add_filter函数,纳闷了,为什么其他人都可以呢?
最后经过查找,发现源头出在wp-settings.php文件里面!因为默认Wordpress设置文件是先调用function.php再调用plugin.php文件的,但是add_filter()函数是处于plugin.php中,因为在读取function.php文件时还没对plugin.php文件进行调用,所以add_filter()是不可识别的。只需要打开wp-settings.php文件,找到第68行,看到如下显示:
require( ABSPATH . WPINC . '/compat.php' ); require( ABSPATH . WPINC . '/functions.php' ); require( ABSPATH . WPINC . '/class-wp.php' ); require( ABSPATH . WPINC . '/class-wp-error.php' ); require( ABSPATH . WPINC . '/plugin.php' );
把plugin.php调用顺序放在functions.php之前即可:
require( ABSPATH . WPINC . '/compat.php' ); require( ABSPATH . WPINC . '/plugin.php' ); require( ABSPATH . WPINC . '/functions.php' ); require( ABSPATH . WPINC . '/class-wp.php' ); require( ABSPATH . WPINC . '/class-wp-error.php' );
更改完后发现能正常调用add_filter(),太好了。不得不承认,很多时候要用add_filter()这个函数进行很多内容优化的。
文章评论
我在add_shortcode时遇到同样问题,这种方法解决不了,请问lz知道怎么弄吗?