Почему не работает пагинация (custom post type)?

Здравствуйте!

Есть кастомный тип записи - portfolio

Есть шорткод, выводящий 6 записей на страницу, под записями есть кнопка "Следующая страница →" - и это не рабочаяя ссылка, в чем может быть проблема?

Код шорткода:
add_shortcode('portfolio', 'my_shortcode_function');
function my_shortcode_function() {
	global $wp_query;
	$wp_query = new WP_Query(array(
		// 'category_name' => 'portfolio',
		'post_type' => 'portfolio',
		'posts_per_page' => '6',
		'paged' => get_query_var('paged') ?: 1
	));
ob_start();
echo '<div class="portfolio">';
	if ( have_posts() ) :
	        while ( have_posts() ) : the_post();

	            get_template_part( 'template-parts/portfolio', get_post_format() );

	        endwhile;
	    else :
	        get_template_part( 'template-parts/content', 'none' );
	    endif;
echo '</div>';

	posts_nav_link(); // пагинация - echo тут не надо
	wp_reset_query(); // сброс $wp_query
	$out = ob_get_clean();
	return $out;
}


То есть у меня на странице 'site.com/portfolio' есть шесть записей, по клику на кнопку "Следующая страница →" я перехожу на страницу 'site.com/portfolio/page/2/' - но это страница 404..как исправить проблему?
  • Вопрос задан
  • 300 просмотров
Решения вопроса 1
wppanda5
@wppanda5 Куратор тега WordPress
WordPress Mедведь
Когда же люди начнут понимать, то, что они делают.

function my_shortcode_function() {
		$wp_query = new WP_Query( [
			'post_type'      => 'portfolio',
			'posts_per_page' => 6,
			'paged'          => get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1
		] );
		ob_start();
		echo '<div class="portfolio">';
		if ( $wp_query->have_posts() ) :
			while ( $wp_query->have_posts() ) : $wp_query->the_post();
				get_template_part( 'template-parts/portfolio', get_post_format() );
			endwhile;
		else :
			get_template_part( 'template-parts/content', 'none' );
		endif;
		echo '</div>';

		posts_nav_link();
		$out = ob_get_clean();

		return $out;
	}


И да, не надо сокращать тернарный оператор пока плаваете в предмете - пишите полностью

То есть у меня на странице 'site.com/portfolio' есть шесть записей, по клику на кнопку "Следующая страница →" я перехожу на страницу 'site.com/portfolio/page/2/' - но это страница 404..как исправить проблему?


пересохранить ЧПУ
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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