使用wp_localize_script将Shortcode $ atts从PHP传递到Javascript

时间:2011-11-18 20:15:50

标签: php javascript wordpress-plugin shortcode

我想使用Wordpress'wp_localize_script来传递javascript脚本可用的短代码$atts

似乎wp_localize_script只能在我wp_enqueue_script引用脚本的同一个函数中工作。

我在另一个函数中访问短代码$atts

function csf_enqueue () {

//other enqueued scripts

wp_enqueue_script( 'csf_script_jquery', plugins_url( 'js/path/to/file', __FILE__ ), array ( 'jquery', 'jquery-ui-core') );

    $myvars = array('value' => 'one');
    wp_localize_script('csf_map_script_jquery', 'myVars', $myvars);
}

我想将$myvars替换为短代码“$atts

我添加短代码如下;

add_shortcode("csf_map", "csf_shortcode_ajax_frontend");

csf_shortcode_ajax_frontend()中,我访问了短代码$atts

function csf_shortcode_ajax_frontend( $atts, $content = null ) {

      $atts = shortcode_atts( array ( 
      'width'=> 600,
      'height'=> 400,
      'myinfo' => 'blah'
      ), $atts );  

//continues
}

当wp_localize_script有(?)包含$atts行时,如何访问包含wp_localize_script的函数中的短代码wp_enequeue_script

2 个答案:

答案 0 :(得分:1)

global $atts;

然后在你的函数中提取atts。

extract($atts);

希望这适合你。 祝你好运

答案 1 :(得分:0)

使用update_option(“this_is_a_field”,$ atts)在csf_shortcode_ajax_frontend()中创建一个选项字段,然后在调用wp_localize_script()钩子时访问csf_enqueue()中的相同数据库选项字段不是最好的吗? / p>