更改特定页面的内容

时间:2016-05-04 作者:real_big_words

我想能够替换一个页面的内容,如果它是一个非常特定的页面。

以下是我迄今为止所写的内容:

function signup () {
    global $post;
    $slug = $post->post_name;

    if (is_page( ) && strcmp($slug, \'signup_slug\') == 1) {
        $content = "New Text";
    } else {
        // This is literally just "the_content()" except returning the value, not echo
        $content = $post->post_content;
        $content = apply_filters( \'the_content\', $content );
        $content = str_replace( \']]>\', \']]>\', $content );
    }
    return $content;
}

add_action(\'the_content\', \'signup\');
当我在名为“signup\\u slug”的页面上运行这段代码时,它运行得很好。在其他地方,“apply\\u filters”给了我一个错误,说明函数中存在溢出错误。它运行了100次,然后中止。

如果我去掉“apply\\u filters”(应用过滤器)这一位,它的行为有点古怪,使头版上的每一篇文章都有一个最小的高度,有时甚至比正常的高度要大。我想它忽略了我的“阅读更多”标签。此外,我的所有YouTube链接都显示为URL,而不是像通常那样的嵌入式视频。

基本上,我想知道两件事:

加载页面时,我是否可以使用另一个钩子,而不仅仅是“内容”?或者,有没有一种方法可以显示“the\\u content()”的内容,而不产生我一直以来的所有令人讨厌的副作用

谢谢

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

你的职能是signup 但你在上钩check_for_signup. 你也在尝试申请the_content 从连接到的函数中筛选the_content:

function wpse_225562_replace_for_signup( $content ) {
    if ( strcmp( \'signup_slug\', get_post_field( \'post_name\' ) ) === 0 ) {
        $content = \'Sign up, bitch.\';
    }

    return $content;
}

add_filter( \'the_content\', \'wpse_225562_replace_for_signup\' );
在这里,我们只是想the_content 并替换通过的$content 如果当前页面为signup_slug - 希望这有意义?