Я использую настраиваемый цикл wordpress, который позволяет мне задавать определенный пост после определенного количества сообщений. Например, первые три сообщения будут оформлены одинаково, следующие 4 сообщения будут отличаться от первых трех и так далее. Это также позволяет мне добавлять разделы <div>
между сообщениями.
Вот код кода PHP, который я использую для выполнения этого.
if (have_posts()) : $count = 0; $paged = ( get_query_var('paged') > 1 ) ? get_query_var('paged') : 1; while (have_posts()) : the_post(); $count++; if ($count <= 3 && $paged === 1) : if ($count === 1) echo '<div class="break"><h2>Break div | first 3 posts</h2></div>'; ?> <div class="first-three"> <?php the_title() ?> </div> <?php elseif (3 < $count && $count <= 7 && $paged === 1) : if ($count === 4) echo '<div class="break"><h2>Break div | next 4 posts</h2></div>'; ?> <div class="next-four"> <?php the_title() ?> </div> <?php elseif (7 < $count && $count <= 13 && $paged === 1) : if ($count === 8) echo '<div class="break"><h2>Break div | next 6 posts</h2></div>'; ?> <div class="next-six"> <?php the_title() ?> </div> <?php elseif (13 < $count && $count <= 20 && $paged === 1) : if ($count === 14) echo '<div class="break"><h2>Break div | next other 6 posts</h2></div>'; ?> <div class="next-other-six"> <?php the_title() ?> </div> <?php else : if ($count === 21) echo '<div class="break"><h2>Break div | last 6 posts</h2></div>'; ?> <div class="last-six"> <?php the_title() ?> </div> <?php endif; endwhile; ?> <div class="nav-previous alignleft"><?php next_posts_link('Older posts'); ?></div> <div class="nav-next alignright"><?php previous_posts_link('Newer posts'); ?></div><?php endif;
Я не уверен, что вам нужно все это, но я решил разместить его там на всякий случай.
Теперь вот часть, с которой я сталкиваюсь.
<?php elseif (3 < $count && $count <= 7 && $paged === 1) : if ($count === 4) echo '<div style="clear:both;"></div> <div class="large-6 columns" style="max-width:566px; float:left;"> ', include 'thumbnail-break.php', '</div> '; ?>
Для этой части я добавил функцию include
чтобы поместить путь шаблона между сообщением. Он возвращает путь, но также выводит номер 1 после содержимого.
Как мне избавиться от числа 1.
Вы должны использовать вместо include('thumbnail-break.php');
:
get_template_part('thumbnail','break');
Какой стандартный способ WordPress включает частичные файлы шаблонов из шаблонов страниц.
Это потому, что вы пытаетесь повторить его, пока он возвращает 1
на успех.
Сделайте это вместо этого:
if ($count === 4) echo '<div style="clear:both;"></div> <div class="large-6 columns" style="max-width:566px; float:left;"> '; include 'thumbnail-break.php'; echo '</div> '; ?>
Согласно документации на php.net вы найдете эту строку:
Обработка Возвраты: включение возвращает FALSE при сбое и вызывает предупреждение. Успешное включает, если не переопределяется включенным файлом, возвращает 1.
Попробуйте включить следующее:
include 'thumbnail-break.php', '</div> '; ?>
Для того, чтобы:
include_once 'thumbnail-break.php', '</div> '; ?>
Функция include_once возвращает только истинное утверждение, которое, как я считаю, не будет отображаться в вашем html. Непроверенный, но дайте мне знать, как это происходит. По крайней мере теперь вы знаете, почему излучается 1.