为什么覆盖$global会扼杀_content()?

时间:2017-12-17 作者:kater louis

我在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 哪个太大了,关掉过滤器

1 个回复
最合适的回答,由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关于全局变量的文章。你真的不应该完全覆盖它,否则你会破坏的不仅仅是模板标签。老实说,我很惊讶你能走这么远。

结束

相关推荐

在非文档挂接上调用Apply_Filters

我一直在努力学习如何编写插件,我认为最好的方法是查看其他插件。我在看这一行和第一行/** * Plugin Name: Media Library Categories * Plugin URI: http://wordpress.org/plugins/wp-media-library-categories/ * Description: Adds the ability to use categories in the media library. * Vers