添加新筛选器后,“已达到‘100’的最大函数嵌套级别”

时间:2015-02-20 作者:shuvroMithun

我正在尝试筛选特定页面的帖子标题,当在该页面上提交表单时,我正在尝试筛选标题。这是代码

function filter_title_after() {

   $current_page_id = get_the_ID();
   if($current_page_id == 58 && !empty($_POST)){
       $title = "Congratulation";
   } else {
       $title = the_title();
   }

    return $title;
}
add_filter( \'the_title\', \'filter_title_after\'); 
添加此筛选器后,我收到一个错误“达到最大函数嵌套级别“100”,正在中止!

我已经查看了几个stackexchange问题,但都没有得到任何帮助

wp_insert_posts Fatal error: Maximum function nesting level of \'100\' reached, aborting!Problem:Save Several Duplicate posts in The Database and then Error nesting level of \'100\' reached

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

the_title() 再次调用函数。如果要避免这种情况,请删除函数内部的回调:

function filter_title_after() {
    remove_filter( current_filter(), __FUNCTION__ );
    // the rest of your code.
但你不应该打电话the_title() 在你的功能中:它prints 标题–这不是您想要的–您已经从WordPress获得了原始标题和ID作为参数。使用它。

此外,应该通过检查来测试POST请求$_SERVER[ \'REQUEST_METHOD\' ].

function filter_title_after( $title, $post_id ) {

    if ( ! is_singular() )
        return $title;

    if ( 58 !== (int) $post_id )
        return $title;

    if ( \'POST\' !== $_SERVER[ \'REQUEST_METHOD\' ] )
        return $title;

    return "Congratulation";
}

add_filter( \'the_title\', \'filter_title_after\', 10, 2 ); 

结束

相关推荐

Unique PHP on each Page

我目前正在决定是否使用WordPress或为未来的网站编写自己的代码,但我需要知道一件事,然后才能做出最终决定。是否可以使用WordPress将PHP脚本插入到单个页面中。我大约40%的页面背后都有自己的PHP脚本,我需要知道这样的事情是否可能(如果可能的话,我应该看什么)。谢谢