next_posts_link()
и previous_posts_link()
будут брать данные только из глобального запроса. Даже если вы укажите в кастомном запросе showposts=5, эти функции все равно будут считать, что на странице выводятся по 10 постов (берут данные из глобальных настроек)the_posts_pagination()
, тоже работает только с глобальным объектомnext_posts_link()
и previous_posts_link()
работают только с глобальным запросом и не будут работать с кастомным WP_Query()
pre_get_posts
add_action( 'pre_get_posts', 'wpz_home_pagesize', 1 );
function wpz_home_pagesize( $query ) {
// Выходим, если это админ-панель или не основной запрос.
if ( is_admin() || !$query->is_main_query() )
return;
// Выводим только 5 постов на главной странице
if ( is_home() ) {
$query->set( 'posts_per_page', 5 );
}
}
$i = 1;
while ( have_posts() ) :
the_post();
get_template_part( 'template-parts/content', get_post_format() );
// после каждого пятого поста выводим баннер
if ( is_int( $i++ / 5 ) ) {
get_template_part( 'template-parts/content', 'offer' );
}
endwhile;
get_the_category()
собрать массивы в массиве родительских категорий$categories = get_the_category();
$out = array();
foreach ( $categories as $key => $category ) {
$out[$category->category_parent][$category->term_id]['title'] = $category->name;
$out[$category->category_parent][$category->term_id]['link'] = get_term_link( $category->term_id, 'category' );
}
foreach ( $out as $keyP => $cats ) {
// пропускаем, если рубрика родительская
if ( $key === 0 )
continue;
echo '<ul class="cats cats-inline">';
foreach ( $cats as $key => $cat ) {
echo '<li class="cats--item"><a href="' . $cat['link'] . '" class="cats--link">' . $cat['title'] . '</a></li>';
}
echo '</ul>';
}
get_the_category()
не будет. Если для работы они вам нужны, то id родительской категории находится в переменной $keyP. Вы можете получить для них данные с помощью get_category()
в цикле или предварительно собрать список $ids и получить одним запросом:$parents = array();
foreach ( $categories as $key => $category ) {
//проверяем, что категория не родительская и ее нет в общем массиве
if ( $category->category_parent !== 0 && !in_array( $category->category_parent, $parents ) ) {
$parents[] = $category->category_parent;
}
}
$args = [
'taxonomy' => 'category',
'include' => $parents,
'fields' => 'id=>name',
];
$terms = get_terms( $args );
foreach ( $out as $keyP => $cats ) {
if ( isset( $terms[$keyP] ) ) {
echo $terms[$keyP];
}
}
$working_hours = [
'1' => '10:00 — 19:00', // понедельник
'2' => '10:00 — 19:00',
'3' => '10:00 — 19:00',
'4' => '10:00 — 19:00',
'5' => '10:00 — 20:00', // пятница
'6' => '10:00 — 15:00', // суббота
'7' => __( 'Day off', 'textdomain' ) // воскресенье
];
$current_day = date( 'N' );
echo strtr( $current_day, $working_hours );
$current = absint( max( 1, get_query_var( 'paged' ) ? get_query_var( 'paged' ) : get_query_var( 'page' ) ) );
$args = [
'post_type' => 'news',
'posts_per_page' => $posts_per_page,
'paged' => $current,
];
paginate_links()
echo wp_kses_post(
paginate_links(
[
'total' => $loop->max_num_pages, // количество берем из дефолтной опции запроса
'current' => $current, // текущая страница
]
)
);
paginate_links()
можете удалить, вызывать global $wp_query
не нужноwhile ( $loop->have_posts() ) {
# code...
}
echo wp_kses_post( paginate_links() );
query_vars
свою переменную add_filter( 'query_vars', 'add_query_vars' );
function add_query_vars( $qvars ) {
$qvars[] = 'partner';
return $qvars;
}
get_query_var()
if ( $query_var = get_query_var( 'partner' ) ) {
# code...
}
add_query_arg()
$url = add_query_arg( ['partner' => $user_id], home_url( '/' ) );