Суть в чём. При отправке формы, данные передаются на admin-ajax.php. В functions.php принимает данные в функции ajax_form(). Потом со страницы от куда выполнилась отправка выполняется показ блока с товарами.
Но функция ajax_form() выполняется сразу при открытии страницы.
Обработка формы
$("#choose-btnShow").on("click", function (event) {
event.preventDefault();
var choose = $("#chooseForm").serialize();
$.ajax({
url: "http://localhost/Likeopt/wordpress/wp-admin/admin-ajax.php",
method: 'post',
data: {
action: 'ajax_order',
choose: choose
},
success: function (response) {
alert("1");
console.log(choose);
}
});
});
add_action('wp_ajax_nopriv_ajax_order', 'ajax_form' );
add_action('wp_ajax_ajax_order', 'ajax_form' );
function ajax_form(){
$choose = join(', ', $_POST['choose']);
echo $choose;
}
Вывод товара
ajax_form();
$posts = get_posts( array(
'numberposts' => 0,
'category_name' => '$choose',
'orderby' => 'date',
'order' => 'DESC',
'include' => array(),
'exclude' => array(),
'meta_key' => '',
'meta_value' =>'',
'post_type' => 'post',
'suppress_filters' => true, // подавление работы фильтров изменения SQL запроса
) );
foreach( $posts as $post ){
setup_postdata($post);
?>
<div class="main-like__product">
<?php
$image = get_field('product-img');
if( !empty($image) ): ?>
<div class="main-like__productimg" style="background-image: url('<?php echo $image['url']; ?>');"></div>
<!-- /.main-like__productimg -->
<?php endif; ?>
<div class="main-like__productdescr">
<div class="main-like__productname"><?php the_title(); ?></div>
<!-- /.main-like__productname -->
<div class="main-like__productprice"><?php the_field("product-price") ?></div>
<!-- /.main-like__productprice -->
<a class="main-like__productbtn button-link" href="<?php the_permalink(); ?>" target="_blank">Подробнее</a>
<!-- /.main-like__productbtn button-like -->
</div>
<!-- /.main-like__productdescr -->
</div>
<!-- /.main-like__product -->
<?php
}
wp_reset_postdata(); // сброс
?>