Задать вопрос
@veroni1337

Почему у меня не работает кнопка «показать еще»?

Здравствуйте, делаю кнопку показать еще по примерам в интернете. Но что то не находит мои посты. В чем я ошибся? Тип записис называется projects.
вывод кнопки на фронте:
<?php
            // текущая страница
            $paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
            // максимум страниц
            $max_pages = $wp_query->max_num_pages;
            // если текущая страница меньше, чем максимум страниц, то выводим кнопку
            if( $paged < $max_pages ) {
                echo '<div id="loadmore" style="text-align:center;" class="loadmore grey_button">
                        Показать ещё
                    <a href="#" data-max_pages="' . $max_pages . '" data-paged="' . $paged . '" class="button"></a>
                </div>';
            }
            ?>


js код:
jQuery(function($){
 
	// определяем в переменные кнопку, текущую страницу и максимальное кол-во страниц
	var button = $( '#loadmore a' ),
	    paged = button.data( 'paged' ),
	    maxPages = button.data( 'max_pages' );
 
	button.click( function( event ) {
 
		event.preventDefault(); // предотвращаем клик по ссылке
 
		$.ajax({
			type : 'POST',
			url : misha.ajax_url, // получаем из wp_localize_script()
			data : {
				paged : paged, // номер текущей страниц
				action : 'loadmore' // экшен для wp_ajax_ и wp_ajax_nopriv_
			},
			beforeSend : function( xhr ) {
				button.text( 'Загружаем...' );
			},
			success : function( data ){
 
				paged++; // инкремент номера страницы
				button.parent().before( data );
				button.text( 'Загрузить ещё' );
 
				 // если последняя страница, то удаляем кнопку
				if( paged == maxPages ) {
					button.remove();
				}
 
			}
 
		});
 
	} );
});


подключение скриптов и код фильтра из functions.php:
// подключение скриптов
add_action( 'wp_enqueue_scripts', 'true_loadmore_scripts' );
 
function true_loadmore_scripts() {
	wp_enqueue_script( 'jquery' ); // в TwentyTwentyOne он не подключен по умолчанию
 
 	wp_register_script( 
		'true_loadmore', 
		get_stylesheet_directory_uri() . '/loadmore.js', 
		array( 'jquery' ),
		time() // не кэшируем файл, убираем эту строчку после завершение разработки
	);
 
	wp_localize_script( 
		'true_loadmore', 
		'misha', 
		array( 'ajax_url' => admin_url( 'admin-ajax.php' ) )
	);
 
	wp_enqueue_script( 'true_loadmore' );
}
// подключение скриптов

// фильтр
add_action( 'wp_ajax_loadmore', 'projects_loadmore' );
add_action( 'wp_ajax_nopriv_loadmore', 'projects_loadmore' );
 
function projects_loadmore() {
 
	$paged = ! empty( $_POST[ 'paged' ] ) ? $_POST[ 'paged' ] : 1;
	$paged++;

	$args = array(
		'post_type'      => 'projects',
		'paged' 		 => $paged,
	);
 
	$query = new WP_Query( $args );

	if ( $query->have_posts() ) :
		while ( $query->have_posts() ) :
			$query->the_post();
			get_template_part( 'template-parts/template', 'projects-catalog' );
		endwhile;
	else :
		echo 'Не найдено записей по заданным параметрам';
	endif;
 
	die;
 
}
// фильтр
  • Вопрос задан
  • 140 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@veroni1337 Автор вопроса
нужно было в $args добавить параметр posts_per_page
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы