我想能够替换一个页面的内容,如果它是一个非常特定的页面。
以下是我迄今为止所写的内容:
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()”的内容,而不产生我一直以来的所有令人讨厌的副作用或者,一个更好的问题可能是,“创建替代页面内容的挂钩的最佳方法是什么?”
谢谢
最合适的回答,由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
- 希望这有意义?