好的,首先让我把它分解一下,这样您就了解了这些函数的用途。
当你本地化一个脚本时,你要做的就是设置一个动作,将Javascript变量打印到页面中,但是这些变量与你注册它们的脚本相关联,这是你传递给它的第一个参数
wp_localize_script
也被称为剧本
handle.
wp_enqueue_script
用于对javascript文件进行排队,并且wp_localize_script
设计用于伴随通过排队系统加载的脚本。您无法本地化任何内容,因此如果您不排队,wp_localize_script
在这里对你没有用。
通常,您可能会像这样使用这两个。。
$myvars = array(
\'ajaxurl\' => admin_url( \'admin-ajax.php\' ),
\'somevar1\' => $somevar_from_somewhere,
\'somevar2\' => $somevar_from_elsewhere
);
wp_enqueue_script( \'my-ajax-request\', plugins_url( \'/path/to/somefile.js\', __FILE__ ) );
wp_localize_script( \'my-ajax-request\', \'MyAjax\', $myvars );
然后在页面中生成以下输出。。
<script type="text/javascript" src="path/to/somefile.js"></script>
<script type="text/javascript">
/* <![CDATA[ */
var MyAjax = {
ajaxurl: "http://example.com/wordpress/wp-admin/admin-ajax.php",
somevar1: "somevalue",
somevar2: "someothervalue"
};
/* ]]> */
</script>
然后可以在脚本中引用,例如。
jQuery(document).ready( function($) {
alert( MyAjax.somevar1 ); // Produces somevalue
alert( MyAjax.somevar2 ); // Produces someothervalue
});
把这些放在一起,你的代码可能会有点像这样。。
// Setup the ajax callback for the "searchmap" action
add_action( \'wp_ajax_searchmap\', \'my_searchmap_function\' );
add_action( \'wp_ajax_nopriv_searchmap\', \'my_searchmap_function\' );
// The callback function for the "searchmap" action
function my_searchmap_function() {
$myposts = get_posts(\'numberposts=-1&offset=$first\');
?>
<div>
<h3>Pages</h3>
<ul>
<?php wp_list_pages(\'title_li=&depth=0&exclude=\'); ?>
</ul>
<h3>Posts</h3>
<ul>
<?php foreach( $myposts as $post ) : setup_postdata( $post ); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
<?php wp_reset_postdata(); ?>
</ul>
<h3>Categories</h3>
<ul>
<?php wp_list_categories(\'title_li=&orderby=name\'); ?>
</ul>
</div>
<?php
die;
}
JS。。(假设它已排队并本地化)
jQuery(document).ready(function($) {
$(\'a.myajax\').click(function(){
var data = {
action: \'searchmap\' // <--- this is the correct action name
};
$.post( MyAjax.ajaxurl, data, function(response) {
$(\'#myresult\').html(response);
});
return false;
});
});
然后是页面中触发操作所需的实际HTML。。
<a class="myajax" href="#">Click me to fetch ajax content</a>
<div id="myresult"></div>
实际答案关于需要做自己的事情,并为脚本打印VAR,我建议你这样做。。。
add_action( \'wp_head\', \'my_js_vars\', 1000 );
function my_js_vars() {
// If it\'s not a specific page, stop here
if( !is_page( \'my-page-with-ajax\' ) )
return;
?>
<script type="text/javascript">
/* <![CDATA[ */
var MyAjax = {
ajaxurl: \'<?php admin_url(\'admin-ajax.php\'); ?>\',
somevar: \'somevalue\',
someothervar: \'someothervalue\'
};
/* ]]> */
</script>
<?php
/*
NOTE:
Make sure not to leave a comma after the last item
in the JS array, else IE(Internet Explorer) will choke on the JS.
*/
}
为了让其他人阅读,我留下了之前发布的代码。