@Dili71

Как передать категорию через AJAX в цикл Wordpress?

Есть загрузка новостей по кнопке с помощью AJAX.
Связка такая:
1) slugname-news.php содержит основной цикл вывода записей по категории, в конце цикла кнопка "Загрузить далее".
2) Ajax запрос

var button = $('#loadmore a'),
    paged = button.attr("data-paged"),
	cat = button.attr("data-category"),
    maxPages = button.attr("data-max-pages"),
    loadmore = $('#loadmore');

button.click(function (event) {
    event.preventDefault(); 
    $.ajax({
        type: 'POST',
        url: '<?php echo admin_url("admin-ajax.php"); ?>',
        data: {
            paged: paged,
			category: cat,	
            action: 'loadmore'
        },
        beforeSend: function (xhr) {
            button.addClass('border_none');
            button.html('<img src="ссылка на gif загрузчик"/>');
        },
        success: function (data) {
            button.removeClass('border_none');
            paged++;
            button.parent().before(data);
            button.text('Загрузить ещё');
            if (paged == maxPages) {
                button.remove();
            }
        }
    });
});

3) регистрация action в function.php (тут же и функция вывода записей)

add_action('wp_ajax_loadmore', 'true_loadmore');
add_action('wp_ajax_nopriv_loadmore', 'true_loadmore');
function true_loadmore()
{
	$category_id = $args_case['cat'];
    $paged = !empty($_POST['paged']) ? $_POST['paged'] : 1;
    $paged++;
    $args_load = array(
		'posts_per_page' => 9,
		'paged'			 => $paged,
		'orderby'		 => 'date',
		'cat'            => $category_case
	);
    query_posts($args_load);
    while (have_posts()) : the_post();?>
        <a class="case_block" href="<?php the_permalink(); ?>">
			<div class="case_box">
				<?php if (has_post_thumbnail( $post->ID ) ): ?>
				<?php $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'single-post-thumbnail' ); ?>
				<img src="<?php echo $image[0]; ?>">
				<?php endif; ?>
			</div>
			<div class="case_box">
				<div class="case_box_inner title_case_box">
					<?php the_title(); ?>
				</div>
				<div class="case_box_inner">
					<?php if ( have_rows( 'titulnyj_blok' ) ) : ?>
						<?php while ( have_rows( 'titulnyj_blok' ) ) : the_row(); ?>
							<?php if ( have_rows( 'meta' ) ) : ?>
								<?php while ( have_rows( 'meta' ) ) : the_row(); ?>
									<?php the_sub_field( 'metki' ); ?>
								<?php endwhile; ?>
							<?php endif; ?>
						<?php endwhile; ?>
					<?php endif; ?>
					</div>
			</div>
	</a>
    <?php
    endwhile;
    die; ?>
}



Сам скрипт отрабатывает корректно, я пытался передать в data-category id самой категории, но дальше передать её в переменную в цикл функции true_loadmore() не получается
$category_id = $args_case['cat']; - смысловой пример того, что хочу получить
  • Вопрос задан
  • 122 просмотра
Решения вопроса 1
@Dili71 Автор вопроса
Решение было очевидным. Добавил в функцию переменную с получением data
$cat_case = !empty($_POST['category']) ? $_POST['category'] : 1;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы