在wordpress中挂钩the_content过滤器

时间:2012-05-09 20:58:21

标签: php wordpress

我将帖子内容保存到帖子元素中,我想检索它而不是原始帖子内容,这样当我调用the_content()时,post meta中的数据看起来不是实际的帖子数据。

function test(){
    $post_meta = post meta data here ....
    echo apply_filters('the_content', '$post_meta');
}
add_filter('the_content', 'test');

我收到此错误

Fatal error: Maximum function nesting level of '100' reached

错误确实有意义,但我怎样才能实现我想做的事情,任何想法?

2 个答案:

答案 0 :(得分:4)

更新:在我的头撞到墙壁之后,这是我能想到的最好的方法来挂钩the_content并在自定义回调中使用其过滤器,而不会陷入无限循环。

答案非常简单,我觉得以前没有考虑过这个问题很愚蠢:

function test($content)
{
    remove_action('the_content', 'test'); //DISABLE THE CUSTOM ACTION
    $post_meta = post meta data here ....
    $cleaned_meta = apply_filters('the_content', $post_meta);
    add_action('the_content', 'test'); //REENABLE FROM WITHIN
    return $cleaned_meta;
}
add_action('the_content', 'test');

我相信你现在已经找到了另一个解决方案,但是,我希望这对你将来遇到的任何问题都有帮助。

答案 1 :(得分:0)

我认为您希望在调用the_content()之前添加过滤器。你可能想要这样的东西。

function modify_content() {
    global $post;
    $post_meta = 'testing';
    $post->post_content = $post_meta;
}
add_action('wp_head', 'modify_content');

这将允许您修改帖子的内容,并仍然通过the_content()上的过滤器运行它。虽然这只适用于单个帖子/页面。如果您想要更改存档页面,则必须找到另一个挂钩。