我尝试使用admin-ajax.php文件向我的网站添加ajax搜索功能,但没有它,但没有运气。我也在网站的其他部分使用JQuery,并且由于此代码,脚本停止工作。当我评论它时,其他脚本(如滑动导航栏)再次开始工作。这是代码 - ---- functions.php ------
function wpa56343_search()
{
global $wp_query;
$search = $_POST['search_val'];
$args = array(
's' => $search,
'posts_per_page' => 5
);
$wp_query = new WP_Query( $args );
get_template_part( 'search-results' );
exit;
}
add_action('wp_ajax_nopriv_wpa56343_search', 'wpa56343_search');
add_action('wp_ajax_wpa56343_search', 'wpa56343_search');
---- JS文件----
jQuery(document).ready(function() {
$("#searchsubmit").click(function(e){
e.preventDefault();
var search_val=$("#s").val();
$.ajax({
type:"POST",
url: "./wp-admin/admin-ajax.php",
data: {
action:'wpa56343_search',
search_string:search_val
},
success:function(data){
$('#results').append(response);
}
});
});
我在函数文件中使用了wp_enqueue_script来排队脚本。当我添加此代码时,所有jquery功能都会停止,对于搜索页面,我会被重定向到默认页面。提交按钮单击事件也未被触发。有人可以请教吗?我正在尝试一切,但似乎没有任何工作。
答案 0 :(得分:1)
所以我解决了这个问题。好极了!我没有成功地使上述代码工作,但我在David Albert的博客上发现了我的解决方案(谢谢大卫!)
http://premium.wpmudev.org/blog/how-to-use-ajax-with-php-on-your-wp-site-without-a-plugin/
这是一篇写得很好的文章,很容易理解。在我名下的评论部分下,您可以找到特定于搜索的代码。 (检索和渲染结果)。 希望这可以帮助。
答案 1 :(得分:0)
您无法使用 get_template_part 。以json格式传递数据并使用该数据。
function wpa56343_search()
{
global $wp_query;
$search = $_POST['search_val'];
$args = array(
's' => $search,
'posts_per_page' => 5
);
$results = new WP_Query( $args );
echo json_encode( $results );
exit;
}
还更改了js代码
jQuery(document).ready(function($) {
$("#search-container").click(function(e){
e.preventDefault();
var search_val=$("#s").val();
$.ajax({
type:"POST",
url: "./wp-admin/admin-ajax.php",
data: {
action:'wpa56343_search',
search_string:search_val
},
success:function(data){ alert(data);
$('#results').append(data);
}
});
})
});