在循环外部调用is_Single()

时间:2018-09-02 作者:MokkaArchiven9

所需的文件不会加载到单个帖子上,也不会加载到任何地方!如果我删除is_single() 功能我可以让它工作。我的问题是如何检查当前页面是否为帖子?

我看了其他问题,看起来我调用的是循环外的函数,但无论我在这些答案中尝试什么都不起作用!!

你会怎么处理?谢谢

class Something {

    function my_func() {
        if ( is_single() ) {
            require_once( \'/lib/control.php\' );
        }
    }
}

$something = new Something();
$something->my_func();

1 个回复
SO网友:Farsad

首先,您直接在类的新实例中调用WordPress函数,这会导致一个空的wp\\U查询状态,在调用代码时会生成一个日志。

要解决此问题,您应该将呼叫移动到init 胡克,像这样:

class Something() {
    public function __construct() {
        add_action(\'init\', [$this, \'my_func\']);
    }
    public function my_func() {
        if ( is_single() ) {
            require_once( \'/lib/control.php\' );
        }
    }
}

new Something();
您的函数将在WordPress初始化结束后和任何标头之前运行,因此,全局$wp_query 实例现在知道发生了什么。

如果上述解决方案对您无效,您也可以尝试以下方法:

将通话移动到single.php 主题的文件。(简单,凌乱)

  • 再次检查您的single.php 文件已用循环包装。

    尝试更换is_single 方法$wp_query->is_single() 看看会发生什么。(不要忘记添加global $wp_query 在函数的第一行)

  • 结束

    相关推荐