web-dev-qa-db-de.com

Übergabe von Booleschen Werten mit wp_localize_script

Ich verwende wp_localize_script, um einige Werte aus meinen Designoptionen an eine Javascript-Datei zu übergeben. Zuerst habe ich die Werte aus meinen Themenoptionen erhalten:

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

Dann habe ich wp_localize_script verwendet, um mein Array von Werten zu erstellen.

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

In meiner Javascript-Datei habe ich folgendes gemacht:

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,
});

Zu meinen Themenoptionen gehören einige Werte, die mit Kontrollkästchen erstellt wurden, die mit 0/1-Booleschen Werten funktionieren, während das von mir verwendete jQuery-Plugin mit true/false funktioniert. Ich habe versucht, den Booleschen Wert als Zeichenfolge zu speichern, indem ich ein Dropdown-Menü mit zwei Optionen verwendet habe, entweder true oder false, aber das scheint nicht zu funktionieren. Wie kann ich die Booleschen Werte aus den Theme-Optionen an die Javascript-Datei übergeben? Anregungen und Hinweise sehr willkommen :)

5
charlenemasters

Versuche dies:

$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']
) );

Angenommen, slide-auto ist die Option, die Sie zu einem Booleschen Wert gemacht haben.

Dieses Skript ist nicht getestet, ich habe es hier direkt eingegeben.

4
Mike Madern