Здравствуйте! Подскажите, почему не работает пагинация для кастомного типа записи.
Цикл вывода записей:
<? $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 );
}