Опции темы Wordpress - wp_localize_script (); - PullRequest
1 голос
/ 16 августа 2011

Я использую 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(); или лучший способ ее использования.

1 Ответ

0 голосов
/ 14 сентября 2011

Я создал файл с именем 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, могут быть некоторые проблемы с кешем, но я бы предпочел, чтобы он выводил все опции встроенными.

...