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