在广泛阅读了这篇文章之后,我遇到了一个难题,所以我想我应该在这里继续问下去。
我正在构建一个AJAX调用,它将运行WP\\u查询并返回一系列具有特定标记的帖子。该标记由用户单击ul中的项目来指定,然后将适当的标记作为“数据段塞”传递给AJAX调用。
我已经构建了JS和PHP,但我的AJAX调用一直返回一个空数组,尽管它记录了一个“成功”。我已经仔细检查了正确的slug是否传递到WP\\u查询的参数中,以及正确的脚本是否已排队。查询似乎没有返回任何内容。然而,当我在AJAX之外运行相同的查询时,使用硬编码的参数,它可以正常工作。
如果有人对如何进行这项工作有想法,我们将不胜感激。
这是我在函数中放置的PHP。php:
//Enqueue custom scripts
function my_adding_scripts() {
wp_register_script(\'gg-load\', \'/wp-content/plugins/gg-load.js\', array(\'jquery\'),\'1.1\', true);
wp_localize_script( \'gg-load\', \'myAjax\', array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' )));
wp_enqueue_script(\'gg-load\');
}
add_action(\'wp_enqueue_scripts\', \'my_adding_scripts\');
//Process AJAX data
add_action( \'wp_ajax_gg_query_posts\', \'gg_query_posts\' );
add_action( \'wp_ajax_nopriv_gg_query_posts\', \'gg_query_posts\' );
function gg_query_posts() {
$response = array();
$slug = $_REQUEST["slug"];
$args = array(
\'tag\' => "$slug",
\'orderby\' => "title",
\'order\' => "ASC",
);
$the_query = new WP_Query ($args);
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
$response->status = true;
$response->query = $the_query;
}
} else {
$response->status = false;
$response->message = esc_attr__( \'No posts were found\' );
}
wp_reset_postdata();
die( json_encode( $response ) );
}
下面是ajax调用:
jQuery(document).ready( function() {
jQuery("ul.gg-menu>li").click( function(e) {
e.preventDefault();
slug = jQuery(this).attr("data-slug"); //Passes slug to the PHP script for use in the WP_Query
jQuery.ajax({
type : "post",
dataType : "json",
url : myAjax.ajaxurl,
data : {action: "gg_query_posts", slug: slug},
error: function(data) {
console.log(data, "error");
},
success: function(data) {
console.log(data, "success");
//We work with the post data here
}
})
})
})