0

我将帖子内容保存到帖子元中,并且我想检索它而不是原始帖子内容,这样当我调用 the_content() 时,帖子元中的数据不会显示为实际的帖子数据。

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

这个错误确实有道理,但是我怎样才能实现我想要做的事情,有什么想法吗?

4

2 回答 2

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');

我相信您现在已经找到了另一种解决方案,但是,我仍然希望这有助于您将来可能遇到的任何问题。

于 2012-05-09T21:46:17.913 回答
0

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

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

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

于 2012-05-09T21:24:50.847 回答