WordPress插件选项和jQuery

时间:2011-06-08 作者:Triple P

我正在创建一个使用jQuery修改一些css的插件,但我不知道如何使用WordPress插件选项(如复选框true/false)控制jQuery的执行。WordPress选项可以用作jQuery中的“变量”吗?或者每个案例都需要一个唯一的。js文件?

1 个回复
最合适的回答,由SO网友:Chris_O 整理而成

可以使用以下命令将变量传递给jQuery或任何javascriptwp_localize_script.

示例:

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

}
如何在javascript中获取变量:

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

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

});
WordPress将在<sript> </script> 标记,然后将javascript文件排队,以便可以使用它们。

看见wp_localize_script 有关更多信息,请访问WordPress上的Otto。

编辑:

尝试将变量添加到返回值的函数中。我使用的是下面的精确代码,它是有效的。

wp_localize_script( \'cmb-scripts\', \'MaxChar\', array( \'charlimit\' => c3m_get_the_size( $excerpt_length[0] ) ) );
返回以下变量的函数:

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

结束