#ajax #wordpress #woocommerce
Вопрос:
Необходимо мгновенно перейти к поисковым записям, но почему я могу вызвать такую ошибку?
Эта ошибка : СООБЩЕНИЕ https://localhost/theme/wp-admin/admin-ajax.php 500 (Внутренняя ошибка Сервера)
Следуя моему коду: HTML
<input type="text" name="keyword" id="keyword" onkeyup="fetch()"></input>
<div id="datafetch">Search results will appear here</div>
functions.php
add_action( 'wp_footer', 'ajax_fetch' );
function ajax_fetch() {
?>
<script type="text/javascript">
function fetch(){
jQuery.ajax({
url: '<?php echo admin_url('admin-ajax.php'); ?>',
type: 'post',
data: { action: 'data_fetch', keyword: jQuery('#keyword').val() },
success: function(data) {
jQuery('#datafetch').html( data );
console.log(data);
}
});
}
</script>
<?php }
add_action('wp_ajax_data_fetch' , 'data_fetch');
add_action('wp_ajax_nopriv_data_fetch','data_fetch');
function data_fetch(){
$tax_query[] = array(
'taxonomy' => 'product_visibility',
'field' => 'name',
'operator' => 'NOT'
);
$query = new WC_Product_Query(
array(
'tax_query' => $tax_query,
'posts_per_page' => -1,
's' => esc_attr( $_POST['keyword'] ),
'post_type' => 'post'
)
);
$products = $query->get_products();
if($products) {
foreach( $products as $product) {
echo '
<a href=" '. get_permalink($product->id) .' "> '. $product->get_name() .' </a>';
}
}
wp_reset_postdata();
die();
}
я получаю такую ошибку
debug.log
Stack trace:
#0 C:xampphtdocsthemewp-includesclass-wp-hook.php(303): data_fetch('')
#1 C:xampphtdocsthemewp-includesclass-wp-hook.php(327): WP_Hook->apply_filters('', Array)
#2 C:xampphtdocsthemewp-includesplugin.php(470): WP_Hook->do_action(Array)
#3 C:xampphtdocsthemewp-adminadmin-ajax.php(187): do_action('wp_ajax_data_fe...')
#4 {main}
Заранее благодарю вас
Комментарии:
1. Попробуйте использовать для постановки в очередь и локализации сценария.
2. деталь я пропустил $product ->get_name() Я написал именно этот $product >>get_name() . Решение найдено. Спасибо