我在single.php 现在需要使用the_content() 而不仅仅是$post->post_content; 对于youtube嵌入等-
在其他项目中the_content() 和apply_filters("the_content", ...) 做它应该做的,但不是在这个single.php ... 具有相同插件的2017主题在the_content(); 所以这一定是我的主题。
经过数小时的研究和摆弄,我发现我在代码的早期就做到了这一点:
$GLOBALS = array(
"active_menu" => "...",
"something_else" => true
);
// don\'t ask me why I did this, I was a even more a noob back then;
// it\'s been working fine so far; no time to refactor.. u know the excuses–
// of course I just do it like this now:
$GLOBALS["active_menu"] = "...";
$GLOBALS["something_else"] = true;
当我想看看“原作”中有什么可能如此重要的时候
$GLOBALS, 浏览器加载时就像它被遗忘了一样,然后又重新加载。这个变量里面有很多东西。
所以问题是
为什么要覆盖$GLOBALS 哪个太大了,关掉过滤器
最合适的回答,由SO网友:Jacob Peattie 整理而成
模板标记,如the_content() 和the_title() 依赖于全球$post 变量($GLOBALS[\'post\']).
请参阅源代码get_post(), 哪一个get_the_title(), 例如,用于获取当前帖子以获取其标题:
function get_post( $post = null, $output = OBJECT, $filter = \'raw\' ) {
if ( empty( $post ) && isset( $GLOBALS[\'post\'] ) )
$post = $GLOBALS[\'post\'];
WordPress严重依赖于全局变量。看见
this codex关于全局变量的文章。你真的不应该完全覆盖它,否则你会破坏的不仅仅是模板标签。老实说,我很惊讶你能走这么远。