我几乎要用Ajax加载wordpress中的侧边栏,使用这个例子( https://wordpress.stackexchange.com/questions/61830/use-ajax-request-to-load-sidebar )
但是它不是加载我的新sidebar-ajax.php,而是总是在名为“sidebar”的div中加载index.php。 我有感觉,我的功能(get_template_part('sidebar-ajax'); )没有正确执行,但找不到错误
在我的functions.php中插入了:
add_action('wp_enqueue_scripts', 'theme_enqueue_scripts');
function theme_enqueue_scripts() {
wp_enqueue_script('jquery');
/* load your js file in footer */
wp_enqueue_script('theme-script', get_stylesheet_directory_uri() . '/your-js-file.js',
false, false, true);
}
add_action('wp_ajax_get_ajax_sidebar', 'check_ajax');
add_action('wp_ajax_nopriv_get_ajax_sidebar', 'check_ajax');
function check_ajax() {
?>
get_template_part('sidebar-ajax');
<?php
} ?>
我的js。文件:
jQuery.ajax({
type: 'POST',
url: location.href,
data: { get_ajax_sidebar: 1 },
success: function(data){
jQuery('#sidebar').html(data);
}
});
在我的index.php中我添加了:
<div id="sidebar"></div>
任何帮助都非常感谢。谢谢!
答案 0 :(得分:0)
get_template_part()
在php标签之外......为什么?我喜欢使用get_sidebar()
。试试这个:
add_action( 'wp_ajax_get_ajax_sidebar', 'check_ajax' );
add_action( 'wp_ajax_nopriv_get_ajax_sidebar', 'check_ajax' );
function check_ajax() {
get_sidebar( 'ajax' );
}
答案 1 :(得分:0)
派对有点迟了但是,这不起作用的原因是因为你需要正确的url来调用ajax函数。在wordpress的后端,这是自动完成的,并在名为ajaxurl的javascript变量中定义。在前端你必须自己定义,这是非常直截了当的。在你的functions.php中:
add_action('wp_head','yourfunctionname_ajaxurl');
function yourfunctionname_ajaxurl() {
?>
<script type="text/javascript">
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
</script>
<?php
}
现在您可以将javascript代码更改为:
jQuery.ajax({
type: 'POST',
url: ajaxurl,
data: { action:'get_ajax_sidebar' },
success: function(data){
jQuery('#sidebar').html(data);
}
});
可以在此处的代码中找到更多信息:wp_ajax