IS_RTL返回FALSE,而它应该返回TRUE

时间:2019-06-04 作者:Makiomar

我有两个箱子is_rtl, 一个不行,另一个不行,但不知道为什么。

案例1:不起作用

我定义了一个变量来保存一个值,具体取决于is_rtl, 然后var_dumpadmin_footer 钩子,则结果变为LTR

<?php
/*
Plugin Name: Test
*/

class A{
    public function __construct(){
        $option_name = is_rtl() ? \'RTL \': \'LTR \';
        add_action(\'admin_footer\', function() use($option_name){
            echo \'<pre dir=ltr>\';
              var_dump($option_name);
            echo \'</pre><br>\';
        });

    }
}


$a = new A();
案例2:工程

我在挂接到的可调用函数中定义变量admin_footer, 结果变成了RTL

    <?php
/*
Plugin Name: Test
*/

class A{
    public function __construct(){

        add_action(\'admin_footer\', function(){
            $option_name = is_rtl() ? \'RTL \': \'LTR \';
            echo \'<pre dir=ltr>\';
              var_dump($option_name);
            echo \'</pre><br>\';
        });

    }
}


$a = new A();
为什么会发生这种情况,因为我需要根据页面方向加载选项,但无法使其工作。

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

案例1-is_rtl() 无法工作,因为它已被直接调用。要在WordPress中使用此类Conditional标记,应该已经运行了查询。所以这样的函数应该在钩住适当钩子的函数内部使用。因为它是直接调用的,所以它的值将始终为false。

看见https://developer.wordpress.org/themes/basics/conditional-tags/#where-to-use-conditional-tags

案例2-它可以工作,因为您可以在连接到的函数内使用此标记admin_footer. 所以is_rtl() 将为您提供适当的价值。

所以,如果admin_footer 那么,你需要检查哪个钩子适合你并使用is_rtl() 功能内部正确挂钩。

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。