Загрузить записи из нужной рубрики по ajax WordPress
Всем привет! Сегодня я выложу в запись код загрузки записей в WordPress по ajax. Но особенность этого кода заключается в том, что можно передавать категорию, из которой нужно получить записи. Код поставляется "как есть", а значит требует доработки для работы в том или ином окружении.
js
jQuery(function() { // main page events const startMainEventCategory = jQuery('.main-events__categories-item.active'); const startCategory = startMainEventCategory.find('.js-main-events-item').data('category'); const eventsList = jQuery('.js-main-events-list'); const eventItem = jQuery('.js-main-events-item'); const eventsLoader = jQuery('.js-main-events-loader'); loadPosts(startCategory); eventItem.on('click', function() { const category = jQuery(this).data('category'); jQuery(this).parent().addClass('active').siblings().removeClass('active'); loadPosts(category); }); function loadPosts(category){ showLoader(); jQuery.ajax({ type: 'POST', url: ajaxurl, dataType: "html", // add data type data: { action : 'get_ajax_posts', category }, success: function( response ) { hideLoader(); jQuery( '.loading' ).hide('slow'), eventsList.html( response ); } }); } function showLoader() { eventsLoader.show(); eventsList.hide(); } function hideLoader() { eventsLoader.hide(); eventsList.show(); } });
funuctions.php
function get_ajax_posts() { $category = $_POST['category']; // Query Arguments $args = array( 'post_type' => 'post', 'posts_per_page' => '99', 'category_name' => $category, 'order' => 'DESC', ); // The Query $ajaxposts = new WP_Query($args); $response = ''; // The Query if ($ajaxposts->have_posts()) { while ($ajaxposts->have_posts()) { $ajaxposts->the_post(); $response .= get_template_part('main-single-event'); } } else { // $response .= get_template_part('none'); } echo $response; exit; // leave ajax call } // Fire AJAX action for both logged in and non-logged in users add_action('wp_ajax_get_ajax_posts', 'get_ajax_posts'); add_action('wp_ajax_nopriv_get_ajax_posts', 'get_ajax_posts');
Также не забываем добавить до js вот такой код в шаблон:
var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";