Пользовательский тип сообщения WordPress не может изменить порядок отображения

Я создал собственный тип поста, чтобы вручную создавать выдержки из моего блога на моем сайте-портфолио. У меня есть окно содержимого, ссылка и избранное изображение для типа сообщения, которое я назвал blog.

Проблема в том, что, что бы я ни пытался, сообщения отображаются от самых старых к новым, тогда как я хотел бы сначала отображать самые новые. Вот вызов query_posts():

<?php query_posts( 'post_type=blog&order=ASC'); ?>

Но я также пробовал более сложные запросы, такие как:

<?php query_posts(array('post_type' => 'blog', 'orderby'=>'date','order'=>'ASC')); ?>

My complete template file looks like: ` ">

    <div class="sliderContent">
        <!--first loop-->
        <?php if (have_posts()) : while (have_posts()) : the_post(); ?> 
        <?php the_content(__('Read More &raquo;', THEMENAME)); ?>
        <?php endwhile; else: ?>
        <p><?php _e('Nothing found.', THEMENAME); ?></p>
        <?php endif; ?>

        <!--second loop, displays custom post type-->
        <?php query_posts(array('post_type' => 'blog', 'orderby'=>'date','order'=>'ASC') ); ?>
        <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
        <div class="contenttile">
            <p><a href="<?php echo get_post_meta($post->ID, 'Permalink', true); ?>"><?php the_post_thumbnail('medium'); ?></a></p>
            <h2><?php the_title(); ?></h2>

            <?php the_content(__('Read More &raquo;', THEMENAME)); ?>
        </div>
        <?php endwhile; else: ?>
        <p><?php _e('Nothing found.', THEMENAME); ?></p>
        <?php endif; ?>
    </div>
</div>
<!-- content end -->

<?php } ?>

`

Итак, я показываю содержимое страницы, к которой применяется этот шаблон, а затем показываю свой пользовательский тип сообщения.

Спасибо за помощь, я в тупике!


person catdotgif    schedule 28.05.2012    source источник
comment
Как указал другой ответчик, здесь я выбрал «ASC» в качестве порядка сортировки, но я могу изменить его на «DESC», и это не имеет значения. На самом деле, похоже, что query_posts() игнорирует все части запроса, но post_type? Это возможно?   -  person catdotgif    schedule 28.05.2012


Ответы (2)


Ваш запрос в порядке возрастания. В порядке возрастания от самого старого к самому новому. Вам нужен порядок ПО УБЫВАНИЮ, если вы хотите от самого нового к самому старому. Кроме того, вам следует избегать использования query_posts, если это вообще возможно, так как это изменяет цикл Wordpress по умолчанию.

Ваш второй запрос не намного сложнее, чем первый. Единственная разница заключается в том, что вы используете массив, а не строку для определения параметров запроса (возможно, массив является правильным способом сделать это), и вы устанавливаете параметр orderby.

Наконец, порядок по умолчанию — по дате в порядке убывания (от самого нового к самому старому), поэтому теоретически вам даже НЕ НУЖНО определять параметры порядка и порядка.

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

    <!--second loop, displays custom post type-->
    <?php
    $args = array('post_type' => 'blog', 'orderby'=>'date','order'=>'DESC');
    /*Consider changing to: $args = array('post_type' => 'blog');*/
    $query = new WP_Query($args);
    if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post();
    ?>
    <div class="contenttile">
        <p><a href="<?php echo get_post_meta($post->ID, 'Permalink', true); ?>"><?php the_post_thumbnail('medium'); ?></a></p>
        <h2><?php the_title(); ?></h2>

        <?php the_content(__('Read More &raquo;', THEMENAME)); ?>
    </div>
    <?php endwhile; else: ?>
    <p><?php _e('Nothing found.', THEMENAME); ?></p>
    <?php
    endif;
    wp_reset_postdata();
    ?>
</div>

person maiorano84    schedule 28.05.2012
comment
Я должен был уточнить, я установил порядок ASC или DESC безрезультатно. - person catdotgif; 28.05.2012

Что ж, как намекнул majorano84, после дальнейшего чтения query_posts() вообще не та функция, которую следует использовать (потому что, я думаю, она заставляет сервер работать больше?)

Вместо этого я использовал get_posts(), и он отображает сообщения в предпочтительном порядке без каких-либо дополнительных усилий с моей стороны:

        <?php
            $args = array( 'post_type' => 'blog' );
            $lastposts = get_posts( $args );
            foreach($lastposts as $post) : setup_postdata($post); ?>
                <div class="contenttile">
                        <p><a href="<?php echo get_post_meta($post->ID, 'Permalink', true); ?>"><?php the_post_thumbnail('medium'); ?></a></p>
                        <h2><?php the_title(); ?></h2>
                        <?php the_content(); ?>
                </div>
        <?php endforeach; ?>

`

Так что я назову это ответом, потому что он решает мою проблему. Спасибо!

person catdotgif    schedule 28.05.2012