我正在尝试为一个博客创建一个搜索栏,如果我登录的话,这个搜索栏可以正常工作,但是当我没有注销的时候就不行了。作为注销的用户,它返回一个空数组,成功代码为200。如果有人能帮助我,我将非常感激
下面是我PHP文件
`
function get_ajax_posts() {
$posts_d =array();
// Query Arguments
$args = array(
'post_type' => 'custom_posts',
'post_status' => 'publish',
'posts_per_page' => -1,
'order' => 'DESC',
'orderby' => 'date',
);
// The Query
$ajaxposts = new WP_Query($args); // changed to get_posts from wp_query, because `get_posts` returns an array
if($ajaxposts->have_posts( )){
while($ajaxposts->have_posts( )){
$ajaxposts->the_post();
array_push($posts_d, array(
'title' => get_the_title(),
'url' => get_permalink()
));
}
}
echo json_encode( $posts_d );
exit; // exit ajax call(or it will return useless information to the response)
}
// Fire AJAX action for both logged in and non-logged in users
// add_action('wp_ajax_nopriv_get_ajax_posts', 'get_ajax_posts');
add_action('wp_ajax_get_ajax_posts', 'get_ajax_posts');
add_action('wp_ajax_nopriv_get_ajax_posts', 'get_ajax_posts');
wp_localize_script( 'hello-elementor-child-js', 'script',
array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
下面是我的javascript代码
jQuery('#s').on('keyup',function(){
$ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>"
jQuery.ajax({
type: 'POST',
dataType: "json", // add data type
// url: script.ajax_url,
url: $ajaxurl,
data: { action : 'get_ajax_posts' },
success: function( response ) {
var jobs = '';
var count = 0;
var text = jQuery('#s').val().toLowerCase();
if (!arr || arr.length === 0){
var arr = jQuery(response.filter(function(value){
text = text || null;
return value.title.toLowerCase().includes(text);
}))
};
jQuery.each( arr, function( key, value ) {
if (count == 5){
return false;
} else {
jobs += '<a href="' + value.url + '"><p>' + value.title + '</p></a>';
count++;
}
} );
jQuery('#livesearch').html(jobs);
}
});
});
`
2条答案
按热度按时间lf5gs5x21#
要从主题文件发送 AJAX 请求,我们可以使用wp_localize_script全局声明我们的javascript变量。
您需要本地化脚本。
在js文件中
检查并让我知道 AJAX 调用是否工作。
lc8prwob2#
我也分享了我的工作代码附件。请检查,让我知道,如果你发现任何问题