• Сайт — галерея изображений.
    Есть несколько категорий. При выборе категории открывается страница с превьюшками картинок. По нажатию на превьюшку появляется карусель из полных картинок, начиная с той картинки, на которую нажали.

    Сейчас для превьюшек имеем:
    if (is_category()) query_posts($query_string . «&showposts=$post_number&paged=$paged&cat=$cat «);

    И для карусели тоже самое:
    if (is_category()) query_posts($query_string . «&showposts=$post_number&paged=$paged&cat=$cat «);

    Нужно чтобы превьюшки выводились в случайном порядке.
    Но и карусель соответствовала порядку следования превьюшек. Т.е. если превьюшки выстроились 5-1-3-4-2, то и листаться они должны 5-1-3-4-2.

    Если я в запрос и туда и туда добавляю «&orderby=rand», то превью выстраивается само по себе, а карусель сама по себе. И ни…а не совпадает.

    Как бы так записать случайный порядок в массив, а потом дать этот порядок и превьюшкам и карусели?

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Сэкономьте второй запрос, сдлейте новый объект запроса и с ним 2 раза работайте потом.

    $custom_posts = new WP_Query( $args );

    http://codex.wordpress.org/Class_Reference/WP_Query

    Alex, а могли бы вы чуть подробней разъяснить?

    if (is_category()) {
    $custom_posts = new WP_Query($query_string . «&showposts=$post_number&paged=$paged&cat=$cat «);
    $custom_posts_clone = $custom_posts; // $custom_posts содерожит внутри посты условно. Вы просто его клонируете и потом повторно используете клон
    }

    Насчет клоинрования не уверен, может быть и не нужно крлонировать, а просто 2 раза в цикле работать с $custom_posts. По коду нужно сомтреть отладчиком, что происходит с объектом после выполениня цикла.

    // The Loop
    while ( $custom_posts->have_posts() ) : $custom_posts->the_post();
    … // тут превьюшки
    endwhile;

    while ( $custom_posts_clone->have_posts() ) : $custom_posts_clone->the_post();
    … // тут карусель
    endwhile;

    // Reset Post Data
    wp_reset_postdata();

    Если это все в 1 месте выводится, то нужно в 1 цикле все делать лучше.

    Не получается никак.. 🙁 Проблема с выводом в Loop’е.
    Вот оригинальный код:

    <?php if (is_category()) $post_number = get_option('dailynotes_catnum_posts'); ?>
    
    <?php global $query_string;
    if (is_category()) query_posts($query_string . "&showposts=$post_number&paged=$paged&cat=$cat");
    ?>
    
    <?php
    if (isset($_REQUEST["post_type"])) {
    	$args=array(
    	   'showposts'=> get_option('dailynotes_archive_customposts'),
    	   'paged'=>$paged,
    	   'post_type' => $_REQUEST["post_type"]
    	);
    	query_posts($args);
    }; ?>
    
    <div id="posts_big">
    	<?php  $i = 0; if (have_posts()) : while (have_posts()) : the_post(); $i++; ?>
        <?php include(TEMPLATEPATH . '/includes/entry2.php'); ?>
        <?php endwhile; ?>
        <?php endif; wp_reset_query(); ?>
    </div>	
    
    <?php if (is_category()) $post_number = get_option('dailynotes_catnum_posts'); ?>
    
    <?php global $query_string;
    if (is_category()) query_posts($query_string . "&showposts=$post_number&paged=$paged&cat=$cat");
    ?>
    
    <?php
    if (isset($_REQUEST["post_type"])) {
    	$args=array(
    	   'showposts'=> get_option('dailynotes_archive_customposts'),
    	   'paged'=>$paged,
    	   'post_type' => $_REQUEST["post_type"]
    	);
    	query_posts($args);
    }; ?>
    
    <div id="posts">
    	<?php next_posts_link('<img id="next2" src="'.get_bloginfo('stylesheet_directory').'/images/'.$colorSchemePath.'/'.'arrow.gif" alt="next page" />', 0); ?>
        <?php previous_posts_link('<img id="previous2" src="'.get_bloginfo('stylesheet_directory').'/images/'.$colorSchemePath.'/'.'previous.gif" alt="next page" />', 0); ?>
    
        <?php $i = 0; if (have_posts()) : while (have_posts()) : the_post(); $i++; ?>
    
            <?php include(TEMPLATEPATH . '/includes/entry.php'); ?>
    
        <?php endwhile; ?>
    
        <?php endif; wp_reset_query(); ?>

    Не могу исправить так, чтобы работало((

    Получилось!!! Огромное спасибо! Чуть затупил с циклом. Их там фактически два вложенных.
    Да, и клонировать не пришлось. Обошёлся просто $custom_posts

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Тема «Произвольный вывод постов и query_posts.» закрыта для новых ответов.