【问题标题】:Wordpress theme options - wp_localize_script();Wordpress 主题选项 - wp_localize_script();
【发布时间】:2011-08-16 00:04:48
【问题描述】:

我正在使用wp_localize_script(); 来更改我正在构建的主题中的 JS,如下所示:

   wp_enqueue_script('custom', get_bloginfo('template_directory') . '/js/script.js');
   $settings = get_option('bro_options');
   wp_localize_script('custom','settings',$settings);

虽然这很好,但它的工作方式是在相关 JS 文件加载之前写入内联 JS,这样您就可以使用某些变量来修改 JS 及其功能。

问题是,我不太喜欢这个选项以及它如何输出内联 JS。有谁知道这个的替代品?我很确定这不是每个人使用主题选项的方式,所以必须有另一种方式。

任何帮助将不胜感激,也请不要链接到插件。

简而言之:我正在寻找使用 wp_localize_script(); 的替代方法或更好的使用方式。

【问题讨论】:

    标签: php jquery wordpress wordpress-theming options


    【解决方案1】:

    我所做的是创建一个名为 settings.js.php 的文件,并在其中包含了 wp-config.php 文件。

    像这样:

    <?php
    
        header("Content-type: application/x-javascript");
    
        $c = 0;
    
        while($exists !== true && $notfound !== true) {
    
            $c++;
            $str = $str . '../';
    
            if(file_exists($str.'wp-config.php')) {
                $exists = true;
                include($str.'wp-config.php');
    
                $i = 0;
                $amount = sizeof($bro);
    
                echo 'var settings={';
                foreach($bro as $key => $value) {
                    $i++;
                    if($i<$amount) {
                        echo $key . ':"' . $value . '",';
                    } else {
                        echo $key . ':"' . $value . '"';
                    }
                }
                echo '};';
    
            }
    
            if($c === 20) { 
                $notfound = true;
            }
    
        }
    
    ?>
    

    这会在这样的变量中输出我的选项:

    var settings = {
        foo: true,
        bar: false
    };
    

    我会将这个文件排在我的 custom.js 文件之前,这样我就可以确定某些设置是否打开和关闭。

    if(settings.foo === true) {
        ...
    }
    

    所有这一切,所以我没有内联 JS,可能存在一些缓存问题,但我宁愿拥有它而不是内联输出所有选项。

    【讨论】:

      猜你喜欢
      • 2011-07-09
      • 1970-01-01
      • 2012-08-13
      • 2014-08-02
      • 1970-01-01
      • 2015-09-29
      • 2011-11-01
      • 2012-11-10
      • 1970-01-01
      相关资源
      最近更新 更多