web-dev-qa-db-fra.com

Options du plugin WordPress et jQuery

Je crée un plugin qui utilise jQuery pour modifier certaines CSS, mais ce que je ne comprends pas, c'est comment vous pouvez contrôler l'exécution de jQuery avec les options du plugin WordPress (comme les cases à cocher true/false). Les options WordPress peuvent-elles être utilisées comme "variables" dans jQuery? Ou chaque cas nécessiterait-il un fichier .js unique?

2
Triple P

La variable peut être transmise à jQuery ou à n'importe quel javascript à l'aide de wp_localize_script.

Exemple:

add_action( 'template_redirect', 'prefix_enqueue_vars' );
function prefix_enqueue_vars() {
$script_vars = array(
      'setting_1' => get_option( 'some_option' ),
      'setting_2' => get_option( 'another_option' ),
);

wp_enqueue_script( 'my_script', 'path/to/script.js', array( 'jquery' ), true);
wp_localize_script( 'my_script', 'unique_name', $script_vars );

}

Comment obtenir les variables dans votre javascript:

jQuery(document).ready(function($) {

$var_1 = unique_name.setting_1
$var_2 = unique_name.setting_2

});

WordPress affichera vos variables entre les balises <sript> </script> avant la mise en file d'attente du fichier javascript afin qu'elles soient disponibles.

Voir wp_localize_script de Otto sur WordPress pour plus d'informations.

Modifier:

Essayez d'ajouter les variables à une fonction qui renvoie la valeur. J'utilise le code exact ci-dessous et cela fonctionne.

wp_localize_script( 'cmb-scripts', 'MaxChar', array( 'charlimit' => c3m_get_the_size( $excerpt_length[0] ) ) );

La fonction qui renvoie les variables ci-dessous:

function c3m_get_the_size() {
global $post; global $prefix;
$box_size = get_post_meta( $post->ID, $prefix.'box_size', true );
 if  ( $box_size == 'single-single' ) { $excerpt_length = 150; 
} elseif ( $box_size == 'single-double' ) { $excerpt_length = 150; 
} elseif ( $box_size == 'single-triple' ) { $excerpt_length = 150;

}
return $excerpt_length;
}
3
Chris_O