Задать вопрос
vainax
@vainax
псевдо-разработчик

Почему не работает пагинация для кастомной записи Wordpress?

Здравствуйте! Подскажите, почему не работает пагинация для кастомного типа записи.
Цикл вывода записей:
<? $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
	$args = array( 'post_type' => 'ads', 'posts_per_page' => 2, 'paged' => $paged);
	$loop = new WP_Query( $args );
	while ( $loop->have_posts() ) : $loop->the_post();?>
		<? the_title();?>
	<? endwhile; ?>
	
	<?php
	$pagination = get_the_posts_pagination( array(
	    'mid_size' => 2,
	    'prev_text' => __( 'Newer', 'textdomain' ),
	    'next_text' => __( 'Older', 'textdomain' ),
	) );
?>
<?php 
// clean up after our query
wp_reset_postdata(); 
?>


Код регистрации Custom Post и Custom post taxonomy
//Регистрация объявлений

add_action( 'init', 'register_faq_post_type' );
function register_faq_post_type() {
  // Раздел вопроса - faqcat
  register_taxonomy('adversting-cat', array('ads'), array(
    'label'                 => 'Раздел объявления', // определяется параметром $labels->name
    'labels'                => array(
      'name'              => 'Разделы объявлений',
      'singular_name'     => 'Раздел объявления',
      'search_items'      => 'Искать Раздел объявления',
      'all_items'         => 'Все Разделы объявлений',
      'parent_item'       => 'Родит. раздел объявления',
      'parent_item_colon' => 'Родит. раздел объявления:',
      'edit_item'         => 'Ред. Раздел объявления',
      'update_item'       => 'Обновить Раздел объявления',
      'add_new_item'      => 'Добавить Раздел объявления',
      'new_item_name'     => 'Новый Раздел объявления',
      'menu_name'         => 'Раздел объявлений',
    ),
    'description'           => 'Рубрики для раздела объявлений', // описание таксономии
    'public'                => true,
    'show_in_nav_menus'     => false, // равен аргументу public
    'show_ui'               => true, // равен аргументу public
    'show_tagcloud'         => false, // равен аргументу show_ui
    'hierarchical'          => true,
    'rewrite'               => array('slug'=>'ads', 'hierarchical'=>true, 'with_front'=>false, 'feed'=>false ),
    'query_var' => true,
    'show_admin_column'     => true, // Позволить или нет авто-создание колонки таксономии в таблице ассоциированного типа записи. (с версии 3.5)
  ) );

  // тип записи - вопросы - faq
  register_post_type('ads', array(
    'label'               => 'Объявления',
    'labels'              => array(
      'name'          => 'Объявления',
      'singular_name' => 'Объявление',
      'menu_name'     => 'Объявления',
      'all_items'     => 'Все объявления',
      'add_new'       => 'Добавить объявление',
      'add_new_item'  => 'Добавить новое объявление',
      'edit'          => 'Редактировать',
      'edit_item'     => 'Редактировать объявление',
      'new_item'      => 'Новое объявление',
    ),
    'description'         => '',
    'public'              => true,
    'publicly_queryable'  => true,
    'show_ui'             => true,
    'show_in_rest'        => false,
    'rest_base'           => '',
    'show_in_menu'        => true,
    'exclude_from_search' => false,
    'capability_type'     => 'post',
    'map_meta_cap'        => true,
    'hierarchical'        => false,
    'rewrite'             => array( 'slug'=>'ads', 'with_front'=>true, 'pages'=>true, 'feeds'=>true, 'feed'=>true ),
    'has_archive'         => true,
    'query_var'           => true,
    'supports'            => array( 'title','editor','author','thumbnail','excerpt','comments' ),
    'menu_position' => 2,
    'menu_icon' => 'dashicons-format-aside',
    'taxonomies'          => array( 'adversting-cat' ),
  ) );

}

## Отфильтруем ЧПУ произвольного типа
// фильтр: apply_filters( 'post_type_link', $post_link, $post, $leavename, $sample );
add_filter('post_type_link', 'faq_permalink', 1, 2);
function faq_permalink( $permalink, $post ){
  // выходим если это не наш тип записи: без холдера %products%
  if( strpos($permalink, '%adversting-cat%') === false )
    return $permalink;

  // Получаем элементы таксы
  $terms = get_the_terms($post, 'adversting-cat');
  // если есть элемент заменим холдер
  if( ! is_wp_error($terms) && !empty($terms) && is_object($terms[0]) )
    $term_slug = array_pop($terms)->slug;
  // элемента нет, а должен быть...
  else
    $term_slug = 'no-adversting-cat';

  return str_replace('%adversting-cat%', $term_slug, $permalink );
}
  • Вопрос задан
  • 454 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Val_Ery_1
get_the_posts_pagination:
Из кодекса -
This function only returns the markup. To display it you must echo it or use the_posts_pagination().

Для отображения пагинации вы должны использовать the_posts_pagination(); или echo $pagination();
Ответ написан
Ваш ответ на вопрос

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

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