[Помогите] Несколько loop без дупликатных записей.

Тема в разделе "Wordpress", создана пользователем r0nin, 2 июл 2012.

Статус темы:
Закрыта.
Модераторы: DzSoft, Sorcus
  1. r0nin

    r0nin Постоялец

    Регистр.:
    12 апр 2010
    Сообщения:
    80
    Симпатии:
    4
    Итак есть два кода(loop).
    1) Этот выводит последние 5 записей с автора данного материала.

    PHP:
    <?php
    echo my_get_display_author_posts(); ?>
     
    <?php
    function my_get_display_author_posts() {
        global 
    $authordata$post;
     
        
    $authors_posts get_posts( array( 'author' => $authordata->ID'post__not_in' => array( $post->ID ) ) );
     
        
    $output '<ul>';
        foreach ( 
    $authors_posts as $authors_post ) {
            
    $output .= '<li><a href="' get_permalink$authors_post->ID ) . '">' apply_filters'the_title'$authors_post->post_title$authors_post->ID ) . '</a></li>';
        }
        
    $output .= '</ul>';
     
        return 
    $output;
    }
    ?>


    2) Этот выводит последние 5 записей с категории данной записи.


    PHP:
    <?php
    global $post;
    $category get_the_category($post->ID);
    $category $category[0]->cat_ID;
    $myposts get_posts(array('numberposts' => 5'offset' => 0'category__in' => array($category), 'post__not_in' => array($post->ID),'post_status'=>'publish'));
    foreach(
    $myposts as $post) :
    setup_postdata($post);
    ?>
    <li>
    <a href="<?php the_permalink(); ?>">
    <?php the_title(); ?></a>
    </li>
    <?php endforeach; ?>
    <?php wp_reset_query
    (); ?>
    Под словом данное подразумевается то что эти коды выполняются на страницах одиночной записи (одна запись - single.php).
    Ну вот как сделать так чтобы одинаковые записи отсеивались. То есть один и тот же автор может иметь записи в одинаковых рубриках. В данном случае не надо их выводить.
     
  2. ShaDeRzz

    ShaDeRzz

    Регистр.:
    16 окт 2007
    Сообщения:
    176
    Симпатии:
    65
    Судя по всему, в функции get_posts() происходит выборка данных из базы. Так вот, я бы, при этом раскладе, передавал бы в неё ещё и список id, которые НЕ надо выбирать (подставлять в запрос условие NOT IN(22,434,545,11234) к примеру) или NULL - если исключать ничего не надо.

    О, кстати, только заметил, что у вас там есть параметр post__not_in - вот туда и передавайте, во второй селект (последние 5 записей с категории данной записи), в виде массива, айдишки тех записей, которые нужно исключить (айдишки у нас были выбраны с помощью первого селекта)
     
  3. ShaDeRzz

    ShaDeRzz

    Регистр.:
    16 окт 2007
    Сообщения:
    176
    Симпатии:
    65
    Кароче как-то так:

    PHP:
    Первый селект:
     
    <?php
    echo my_get_display_author_posts(); ?>
    $not_in_arr = array();
    <?php
    function my_get_display_author_posts() {
        global 
    $authordata$post$not_in_arr;
        
    $not_in_arr[] = $post->ID;
        
    $authors_posts get_posts( array( 'author' => $authordata->ID'post__not_in' => array( $post->ID ) ) );
     
        
    $output '<ul>';
        foreach ( 
    $authors_posts as $authors_post ) {
            
    $not_in_arr[] = $authors_post->ID;
            
    $output .= '<li><a href="' get_permalink$authors_post->ID ) . '">' apply_filters'the_title'$authors_post->post_title$authors_post->ID ) . '</a></li>';
        }
        
    $output .= '</ul>';
     
        return 
    $output;
    }
    ?>
     
     
    Второй селект:
     
    <?php
    global $post$not_in_arr;
    $category get_the_category($post->ID);
    $category $category[0]->cat_ID;
    $myposts get_posts(array('numberposts' => 5'offset' => 0'category__in' => array($category), 'post__not_in' =>  $not_in_arr,'post_status'=>'publish'));
    foreach(
    $myposts as $post) :
    setup_postdata($post);
    ?>
    <li>
    <a href="<?php the_permalink(); ?>">
    <?php the_title(); ?></a>
    </li>
    <?php endforeach; ?>
    <?php wp_reset_query
    (); ?>
    P.S. с WP никогда дела не имел, рассуждаю исключительно исходя из уровня своих знаний в php, поэтому за 100% работоспособность не ручаюсь. Но из вышеуказанного кода вы уже просто обязаны получить работоспособный вариант с минимумом усилий
     
Статус темы:
Закрыта.