Как мне получить wordpress, чтобы переопределить предыдущий пост? - PullRequest
1 голос
/ 03 марта 2009

У меня есть страница с списком категорий в верхней части, и обычно она должна содержать сообщения под ней. Список категорий создается с использованием:

    <?php $display_categories = array(4,7,8,9,21,1); $i = 1;
foreach ($display_categories as $category) { ?>
<?php single_cat_title(); ?> //etc
</div>
    <?php } ?>

Тем не менее, это, кажется, заставляет пост-цикл сортировать посты по категориям. Я хочу, чтобы он игнорировал упорядочивание категорий и упорядочение по дате в порядке убывания. Я создал новый WP_Query, поскольку согласно документам вы не можете использовать query_posts () дважды, так что на всякий случай.

    <?php $q = new WP_Query("cat=-1&showposts=15&orderby=date&order=DESC");
    if ( $q->have_posts() ) : while ( $q->have_posts() ) : $q->the_post(); ?>
    the_title(); // etc
    endwhile; endif; ?>

Однако, это все еще , кажется, упорядочивается по категориям (в том же порядке, что и в приведенном выше списке), а затем по дате, а не по дате.

Ответы [ 3 ]

2 голосов
/ 04 марта 2009

У меня с этим тоже были проблемы.

Попробуйте это:

      <?php
     global $post;
     $myposts = get_posts('numberposts=5');

     foreach($myposts as $post) : 
     setup_postdata($post);
     ?>
       <div <?php post_class(); ?>>
         <div class="title">
           <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
           <p class="small"><?php the_time('F j, Y'); ?> by <?php the_author(); ?></p>
         </div>
         <?php the_excerpt(); ?>
       </div>
 <?php 
     endforeach; 
 ?> 

Важной строкой является 'global $ post;'.

Это должно сбросить ваш глобальный запрос. Метод 'setup_postdata ($ post) необходим для предоставления вам доступа к таким функциям, как' the_author () 'или' the_content () '.

-Крис

0 голосов
/ 04 марта 2009

У меня нет опыта работы с WordPress, но есть несколько возможностей:

  1. Вы определяете параметр "order" дважды в строке, с которой вызываете query_posts(), я не знаю, вызывает ли это проблему или нет.
  2. Кроме того, "show" не является допустимым параметром, возможно, вы искали "showposts".

Параметры и их эффекты описаны здесь: http://codex.wordpress.org/Template_Tags/query_posts#Parameters

0 голосов
/ 03 марта 2009

query_posts иногда привередливы. Попробуйте что-то вроде этого и посмотрите, работает ли оно:

query_posts(array('category__not_in'=>array(1),
                  'showposts'=>15,
                  'orderby'=>date,
                  'order'=>DESC));

Поскольку проблема не в этом, попробуйте добавить update_post_caches ($ posts) во второй цикл, например:

<?php $q = new WP_Query("cat=-1&showposts=15&orderby=date&order=DESC");
if ( $q->have_posts() ) : while ( $q->have_posts() ) : $q->the_post(); update_post_caches($posts); ?>
the_title(); // etc
endwhile; endif; ?>

Предположительно, это решает некоторые проблемы с плагинами .

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