Написал плагин для подгрузки постов при клике, каждый пост имеет свой ID, который должен передаваться обработчику и тот выводит данный пост, обработчик работает нормально, дело только в самом плагине, т.к. логи показывают что при клике на любую кнопку идет отправка одного и того же ID поста.
(function($) {
var defaults = {
idproduct: '',
ajaxurl: '',
ajax_timeout: false,
delay_beforesend: 1000
};
$.fn.ajaxPost = function(params){
options = $.extend({}, defaults, params);
function sendForm(){
data = {
'action': 'myfilter',
'query': options.idproduct
};
$.ajax({
url: options.ajaxurl,
data:data,
type:'GET',
beforeSend:function(xhr){
$('.but').text('Загрузка...');
},
success:function(data){
$('.but').text('');
$('#response').html(data);
}
});
};
return this.click(function(){
if(options.ajax_timeout) clearTimeout(options.ajax_timeout);
options.ajax_timeout = setTimeout(sendForm, options.delay_beforesend);
});
};
})(jQuery);
Для запуска:
<button class="button but27">Узнать больше</button>
<button class="button but25">Узнать больше</button>
<button class="button but1">Узнать больше</button>
<script>
jQuery(document).ready(function($){
$('.but27').ajaxPost({
ajaxurl: '//localhost:9000/wp-admin/admin-ajax.php',
idproduct: '27'
});
$('.but25').ajaxPost({
ajaxurl: '//localhost:9000/wp-admin/admin-ajax.php',
idproduct: '25'
});
$('.but1').ajaxPost({
ajaxurl: '//localhost:9000/wp-admin/admin-ajax.php',
idproduct: '1'
});
});
</script>
Вот сам обработчик на всякий случай:
function filter_function(){
print_r($_GET['query']);
$args = array(
'p' => $_GET['query']
);
$query = new WP_Query( $args );
if( $query->have_posts() ) :
while( $query->have_posts() ): $query->the_post();
echo '<h2>' . $query->post->post_title . '</h2>';
endwhile;
wp_reset_postdata();
else :
echo 'No posts found';
endif;
die();
}
add_action('wp_ajax_myfilter', 'filter_function');
add_action('wp_ajax_nopriv_myfilter', 'filter_function');
Запросы:
http://localhost:9000/wp-admin/admin-ajax.php?action=myfilter&query=1
http://localhost:9000/wp-admin/admin-ajax.php?action=myfilter&query=1
http://localhost:9000/wp-admin/admin-ajax.php?action=myfilter&query=1