Intereting Posts
Есть ли плагин или что-то, что позволяет вам использовать BuddyPress, не создавая тему, поддерживающую BuddyPress? Сравните meta_query с регулярным выражением и выполняйте на нем меньше, чем операцию создание опций для плагинов Ключ к действию только для публикации публикации не при редактировании или обновлении Как изменить описание одного и того же изображения, которое можно найти в нескольких экземплярах? Удалить поле комментария из комментариев Проблемы с многопользовательской скоростью WordPress пользовательский переписчик для wordpress Правильный способ добавления кнопки в верхнее меню медиа-библиотеки? Запросить настраиваемые типы сообщений Связывание изображения для открытия видео youtube в лайтбокс / fancybox в wordpress Показать пользовательские поля в Quick Edit Проверьте, что пользователь вошел в систему с помощью JS Пользовательский тип сообщения: Добавить «Изменить | Быстрое редактирование | Корзина | Просмотреть "ссылки на дату (если заголовок не отображается в столбце)? Создание настраиваемого поля с раскрывающимся списком на новой почтовой странице

Как правильно отображать количество сообщений в шаблонах дома / архива первой страницы

Я создаю сайт, на котором первая страница блога, и на страницах архива должно отображаться 9 сообщений, а внутренние страницы должны отображаться 7. Мой index.php выглядит так:

<?php /** * The template for the blog homepage. * * @package The Dispatch */ define('SUBSCRIBE_CTA_INDEX', 5); define('SIGNUP_CTA_INDEX', 6); function get_post_thumbnail_src() { $thumbnail_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), array('1440','600'), true ); return $thumbnail_url[0]; } function get_blog_posts() { $paged = get_query_var('paged', 1) ? get_query_var('paged') : 1; $posts_per_page = ($paged === 1) ? 9 : 7; $offset = ($paged === 1) ? 0 : 2 + ($paged - 1) * $posts_per_page; $args = array( 'posts_per_page' => $posts_per_page, 'paged' => $paged, 'offset' => $offset ); $q = new WP_Query($args); if (!$q->have_posts()) { return array(); } $posts = array(); while ($q->have_posts()) { $q->the_post(); $posts[] = array( 'title' => get_the_title(), 'permalink' => get_the_permalink(), 'id' => get_the_ID(), 'author_id' => get_the_author_meta('id'), 'author' => get_the_author(), 'thumbnail' => get_post_thumbnail_src(), 'categories' => tds_get_category_names() ); } return $posts; } $posts = get_blog_posts(); $first_page = !get_query_var('paged'); // Add 2 to account for starting at 1 and shifting two posts off // Deal with it $offset = ($first_page) ? 2 : 0; array_splice($posts, SUBSCRIBE_CTA_INDEX + $offset, 0, 'subscribe-cta'); array_splice($posts, SIGNUP_CTA_INDEX + $offset, 0, 'signup-cta'); get_header(); ?> <div class="primary content-area"> <main class="site-main" id="main"> <!-- TODO: these probably need better names --> <?php if ($first_page && !get_query_var('paged')): ?> <?php if ($the_post = array_shift($posts)): ?> <?php if ($top_thumbnail = $the_post['thumbnail']): ?> <style> .top-post-container { background-image: url('<?php echo $top_thumbnail; ?>'); background-repeat: no-repeat; background-size: 100%; } </style> <?php endif; ?> <div class="top-post-container"> <?php include(locate_template('template-parts/blog-home-top-post-card.php')); ?> </div> <?php endif; ?> <?php // TODO: move this into a template part ?> <?php if ($the_post = array_shift($posts)): ?> <div id="blog-home-featured"> <div id="second-post"> <?php echo get_the_post_thumbnail($the_post['id'], 'post-thumbnail', array('class' => 'middle-post-thumbnail')); ?> <div class="post-inner"> <p class="blog-post-category"><?php echo implode($the_post['categories'], ', '); ?></p> <h2 class="blog-post-title"><?php echo $the_post['title']; ?></h2> <div class="blog-post-author"> <?php echo get_avatar($the_post['author_id'], 32); ?> by&nbsp;<span class="bold"><?php $the_post['author']; ?></span> </div> <p class="blog-post-summary"><?php echo get_the_excerpt($the_post['id']); ?></p> </div> </div> <?php endif; ?> <div id="featured-posts-container"> TODO </div> </div> <?php endif; ?> <div id="post-grid"> <?php foreach ($posts as $the_post): ?> <?php if (!is_array($the_post)): ?> <div class="post-grid-item"> <?php include(locate_template("template-parts/$the_post.php")); ?> </div> <?php else: ?> <div class="post-grid-item"> <?php include(locate_template('template-parts/post-grid-post.php')); ?> </div> <?php endif; ?> <?php endforeach; ?> <div id="post-pagination"> <?php echo paginate_links(array()); ?> </div> </div> </main> </div> <?php get_footer(); 

** Примечание: ** В конечном итоге я разберу его на несколько частей шаблона. Как ни странно, get_template_part() не работает. Любая идея, почему это так?

Проблема в том, что когда я использую этот код с установкой по умолчанию WordPress, последняя страница серии не работает. Мое обходное решение состояло в том, чтобы установить posts per page до 9 в настройках> чтение. Я делаю это в соответствии с лучшими практиками? Это правильный способ справиться с этим? У меня есть пользовательский тип сообщения, который я буду создавать, который будет отображать 10 сообщений на странице, и я не уверен, как это будет обрабатываться.

Solutions Collecting From Web of "Как правильно отображать количество сообщений в шаблонах дома / архива первой страницы"