WordPress запрос постов в два раздела - PullRequest
1 голос
/ 28 марта 2010

Я хочу отобразить мои WordPress сообщения в категории в двух div.Так, например:

<ul id="left">

<li class="post">POST 1</li>

<li class="post">POST 3</li>

<li class="post">POST 5</li>

<li class="post">POST 7</li>

</ul>

<ul id="right">

<li class="post">POST 2</li>

<li class="post">POST 4</li>

<li class="post">POST 6</li>

<li class="post">POST 8</li>

</ul>

Так что мне нужно сделать, это попросить query_posts каким-то образом начать выплевывать первые 4 сообщения странным образом, а затем равномерно для каждого div.Я не хочу иметь два отдельных WP_Queries, так как это файл category.php и должен иметь цикл по умолчанию.Не совсем уверен, как это сделать.

Любая помощь высоко ценится.

Ответы [ 3 ]

2 голосов
/ 28 марта 2010

Я не проверял это раньше, это не лучший способ, но решение

<?php if (have_posts()) : ?>

    <?php while (have_posts()) : the_post(); ?>

        <?php
            $count++;

            if( $count % 2 ) {
                $left_array[] = array( 'content' => get_the_content('more...') );
            }
            else {
                $right_array[] = array( 'content' => get_the_content('more...') );
            }
        ?>

    <?php endwhile; ?>

    <ul id="left">
        <?php
        foreach( $left_array as $post ) {
            echo '<li class="post">'.$post['content'].'</li>';
        }
        ?>
    </ul>
    <ul id="right">
        <?php
        foreach( $right_array as $post ) {
            echo '<li class="post">'.$post['content'].'</li>';
        }
        ?>
    </ul>

<?php else : ?>

<?php endif; ?>

или та же идея, но по-другому:

<?php if (have_posts()) : ?>

    <?php while (have_posts()) : the_post(); ?>

        <ul id="left">
        <?php
            $count++;

            if( $count % 2 ) {
            }
            else {
        ?>
                <li class="post"><?php the_content('more...'); ?></li>
        <?php
            }
        ?>
        </ul>

        <ul id="right">
        <?php
            $count++;
            if( $count % 2 ) {
        ?>
                <li class="post"><?php the_content('more...'); ?></li>
        <?php
            }
        ?>
        </ul>

    <?php endwhile; ?>

<?php else : ?>

<?php endif; ?>
1 голос
/ 28 марта 2010

Как насчет предварительного построения двух списков: (Я не могу вспомнить синтаксис запроса WP, так что это псевдо-PHP:)

<?php
$list1 = array();
$list2 = array();
$i=0;
foreach($query_results as $res) {
  if(($i++)&1) $list2[] = $res;
  else $list1[] = $res;
}
?>

Теперь list1 содержит первый, третий, ... элемент, а list2 содержит второй, четвертый, ... Затем вы можете распечатать их в двух разделах по своему усмотрению.

(По касательной: есть ли в PHP какой-нибудь лаконичный способ сделать то, что делает приведенный выше код? В Python есть синтаксис пошагового среза ...)

0 голосов
/ 28 марта 2010

Если ваша цель состоит в том, чтобы иметь список столбцов из двух столбцов, было бы намного проще просто вывести сообщения в одном списке, а затем использовать CSS для визуального отображения двух столбцов с помощью float, например:

width: 50%;
float: left;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...