scottb
  • 0
Гуру

Нужен виджет или плагин похожих сообщений

  • 0

Я ищу что-то вроде того, что они используют здесь:

http://www.jennyreviews.com/as-seen-on-tv/triple-joint-formula/

Посмотрите в разделе «Отзывы о похожих продуктах»

Я проверил источник, но не смог найти указанный код плагина. Может это виджет?

Share
  1. @ Скотт Б,

    Похоже, они используют запрос связанных сообщений на основе категории. Когда отображается один элемент (сообщение), запрос ищет идентификатор категории, а затем отображает сообщения из той же категории.

    Добавьте следующий код на боковую панель или даже в конец файла single.php, в зависимости от того, где вы хотите отображать «Похожие сообщения».

    <!--Begin Related Posts-->
        <?php
            if ( is_single() ) :
            global $post;
            $categories = get_the_category();
            foreach ($categories as $category) :
            $posts = get_posts('numberposts=4&exclude=' . $GLOBALS['current_id'] . '&category='. $category->term_id);
            //To change the number of posts, edit the 'numberposts' parameter above
            if(count($posts) > 1) {
        ?>
    
        <div class="widget" id="more-category">
        <h3 class="widgettitle"><?php _e('More in',''); ?> ‘<?php echo $category->name; ?>’</h3>
        <ul>
        <?php foreach($posts as $post) : ?>
        <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
        <?php endforeach; ?>
        </ul>
        </div>
    
        <?php } ?>
    
    <?php endforeach; ?>
    <?php endif; ?>
    
    <!--/related posts-->
    

    Что это делает, так это сначала получает категорию отображаемого текущего сообщения, опуская текущий элемент из запроса, а затем проверяет, чтобы в этой категории было более 1 сообщения.

    Если есть, то будет выведено «Еще в названии вашей категории», за которым следует постоянная ссылка на сообщение. Если вы хотите показать избранное изображение, вы можете изменить последний раздел, чтобы он выглядел так:

    <div class="widget" id="more-category">
        <h3 class="widgettitle"><?php _e('More in',''); ?> ‘<?php echo $category->name; ?>’</h3>
        <ul>
        <?php foreach($posts as $post) : ?>
        <li><?php the_post_thumbnail(); ?><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
        <?php endforeach; ?>
        </ul>
        </div>
    
    • 0
  2. Я здесь, чтобы указать на ошибку в коде, показанном @Scott B.

    Глобальный $post на самом деле является массивом, который WordPress использует для отображения данных в блоге. но в этом коде значение массива в переменной $post переходит к последнему сообщению в текущей категории. поэтому после успешного отображения списка сообщений. когда вы видите комментарии, они всегда будут относиться к последнему сообщению, упомянутому в списке. поэтому, если вы посещаете первое сообщение из текущей категории, поле комментариев будет последним сообщением во вновь сгенерированном списке сообщений. Немного подумав, я нашел решение этой проблемы и добавил еще одну переменную для хранения глобального массива $post. затем, в конце концов, я присвоил значения обратно глобальному $post. таким образом, глобальная почта вернула текущие значения и, таким образом, правильное поле для комментариев. Вот исправленный код, если кому нужно.

    <?php
    ////////////////////////////////////////////////////////////////
    // THE CODE FOR RELATED ARTICLES FROM CURRENT CATAGORY STARTS //
    ////////////////////////////////////////////////////////////////
    
    if ( is_single() );
    global $post;
    $current_post = $post;
    
    $category = get_the_category($post->ID);
    
        $posts = get_posts  (   'numberposts=5&exclude=' 
                        . $GLOBALS['current_id'] 
                        . '&category='
                        . $category->term_id
                        . '&post='
                        . $post->term_id
                    );
    
    //To change the number of posts, edit the 'numberposts' parameter above
    
    if(count($posts) > 1) 
    {
    ?>
    <div class="widget more-category">
        <h2>
            Related Articles
        </h2>
        <ul>
    <?php       
            foreach($posts as $post)
            { 
    ?>
                <li>
                    <a href="<?php the_permalink(); ?>">    
                        <?php the_title(); ?>   
                    </a>
                </li>
    <?php 
            } 
    ?>
        </ul>
    </div>
    <?php 
    } 
    
    $post = $current_post;
    //////////////////////////////////////////////////////////////
    // THE CODE FOR RELATED ARTICLES FROM CURRENT CATEGORY ENDS //
    //////////////////////////////////////////////////////////////
    ?>
    
    • 0
  3. следующий небольшой список функций, связанный с постом через теги

    // related post with wordpress-tags
    // wordpress > 2.3
    function fbbl_related_posts($limit = 5) {
        global $wpdb, $post, $table_prefix;
    
        if ($post->ID) {
            $retval = '<ul>';
            // Get tags
            $tags = wp_get_post_tags($post->ID);
            $tagsarray = array();
            foreach ($tags as $tag) {
                $tagsarray[] = $tag->term_id;
            }
            $tagslist = implode(',', $tagsarray);
    
            // Do the query
            $q = "SELECT p.*, count(tr.object_id) as count
                FROM $wpdb->term_taxonomy AS tt, $wpdb->term_relationships AS tr,     $wpdb->posts AS p WHERE tt.taxonomy ='post_tag' AND tt.term_taxonomy_id = tr.term_taxonomy_id AND tr.object_id  = p.ID AND tt.term_id IN ($tagslist) AND p.ID != $post->ID
                    AND p.post_status = 'publish'
                    AND p.post_date_gmt < NOW()
                GROUP BY tr.object_id
                ORDER BY count DESC, p.post_date_gmt DESC
                LIMIT $limit;";
    
            $related = $wpdb->get_results($q);
            if ( $related ) {
                foreach($related as $r) {
                    $retval .= '<li><a rel="nofollow" title="' . wptexturize($r->post_title) . '" href="' . get_permalink($r->ID) . '">' . wptexturize($r->post_title) . '</a></li>';
            }
        } else {
            $retval .= '<li>' . __('no related posts', TEXTDOMAIN) . '</li>';
            } $retval .= '</ul>';
    
            echo $retval;
        }
    
        return;
    }
    

    альтернативно вы можете использовать категорию:

    /**
     * related post with category
     * @param: int $limit limit of posts
     * @param: bool $catName echo category name
     * @param: string $title string before all entries
     * Example: echo fb_cat_related_posts();
     */
    if ( !function_exists('fb_get_cat_related_posts') ) {
        function fb_get_cat_related_posts( $limit = 5, $catName = FALSE, $title = '<h3>&Auml;hnliche Beitr&auml;ge</h3>' ) {
            global $post;
    
            $limit = (int) $limit;
            $output  = '';
            $output .= $title;
    
            $category = get_the_category();
            $category = (int) $category[0]->cat_ID;
    
            if ( $catName )
                $output .= __( 'Category: ', FB_BASIS_TEXTDOMAIN ) . get_cat_name($category) . ' ';
    
            $output .= '<ul>';
    
            $args = array(
                'numberposts' => $limit + 1,
                'category' => $category,
            ); 
    
            $recentposts = get_posts( $args );
            foreach($recentposts as $catpost) {
                if ($catpost->ID !== $post->ID) {
                    setup_postdata($catpost);
                    $output .= '<li><a href="' . get_permalink($catpost->ID) . '">' . get_the_title($catpost->ID) . '</a></li>';
                }
            }
    
            $output .= '</ul>';
    
            return $output;
        }
    }
    
    • 0
  4. « Еще один плагин похожих постов » должен делать то, что вы хотите. Просто настройте соответствующий шаблон сообщения, чтобы отображались миниатюра и заголовок сообщения.

    • 0
  5. Я использую плагин под названием «Похожие сообщения», чтобы делать именно то, что вам нужно. Вот так http://www.australianmusichistory.com/this-month-in-australian-music-september/

    Он имеет несколько приятных функций форматирования, которые позволяют отображать миниатюры и т. д.

    • 0
  6. Как автор плагина «Еще один похожий пост», я, конечно же, буду рекомендовать этот плагин. 🙂 (Спасибо Стиву и Дагу за указание на это.) Отзывы, которые я получаю снова и снова, заключаются в том, что «связанные» результаты, полученные от YARPP, имеют тенденцию лучше отражать интуитивное понятие «связанности», в основном из-за YARPP. алгоритм, рассматривающий не только общие категории, но и общие теги, общие ключевые слова в заголовке и общие ключевые слова в содержании.

    Учебник по упомянутой функциональности пользовательских шаблонов доступен здесь. Если у вас есть какие-либо вопросы по интеграции YARPP в вашу установку, я (и многие другие пользователи YARPP) могу помочь в разделе форума wordpress.org для YARPP.

    • 0
  7. Плагин Simple Tags предлагает функциональность «Похожих сообщений» на основе тегов сообщения. Существует способ настроить шаблон отображения связанных сообщений. Не уверен, что вы сможете отобразить изображение поста, но попробовать стоит.

    • 0

Оставить ответ

You must login to add an answer.