web-dev-qa-db-ja.com

Wp_localize_scriptでブール値を渡す

私はwp_localize_scriptを使って私のテーマオプションからjavascriptファイルにいくつかの値を渡します。最初に私は私のテーマオプションから値を得ました:

$options = get_option('theme');  
$flex_auto = $options["slide-auto"];
$flex_animation = $options["slide-animation"];
$flex_direction = $options["slide-direction"];

それから私はwp_localize_scriptを使って値の配列を作成しました。

wp_enqueue_script('flexslider');
wp_localize_script('flexslider', 'flex_vars', array(
    'flex_auto' => $flex_auto,
    'flex_animation' => $flex_animation,
        'flex_direction' => $flex_direction
    )
);

私のjavascriptファイルで私はこれをしました:

var $anim = flex_vars.flex_animation;
var $auto = flex_vars.flex_auto;
var $dire = flex_vars.flex_direction;

jQuery('.flexslider').flexslider({
    animation: $anim,
    slideshow: $auto,
    controlNav: 'thumbnails',
    directionNav: $dire, 
    slideshowSpeed: 7000,
    animationSpeed: 1000,
    touch: true,
});

私が使っているjQueryプラグインがtrue/falseで動作している間、私のテーマオプションは0/1ブール値で動作するチェックボックスで作られた値を含みます。 trueまたはfalseの2つのオプションを持つドロップダウンメニューを使用して、ブール値を文字列として保存しようとしましたが、うまくいかないようです。テーマオプションからJavaScriptファイルにブール値を渡す方法を教えてください。どんな提案やヒントも大歓迎です:)

5
charlenemasters

これを試して:

$options = get_option( 'theme' );

wp_localize_script( 'flexslider', 'flex_vars', array (
  'flex_auto' => ($options['slide-auto']) ? 'true' : 'false',
  'flex_animation' => $options['slide-animation'],
  'flex_direction' => $options['slide-direction']
) );

slide-autoがあなたがブール値を作ったオプションであると仮定します。

このスクリプトはテストされていません。ここに直接入力しました。

4
Mike Madern

これは私のために働く正しい答えです

wp_add_inline_script('helloworld','var site_config ='.json_encode(array (<Your array>)));

ブール値と初期化を含むwp_localize_script

0
Dilip Rajkumar