Поддержка Плагины custom_post_types вывести похожие записи.

  • Как в custom_post_types вывести похожие записи, чтобы пост в котором находимся не отображался в блоке похожих?

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • Какой-нибудь код написали уже? Потому что проще подсказать в коде, чем объяснять на пальцах..

    <div class="similar-materials">
    			    <h4>Другие новости</h4>
    
    				<?php
    					$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    
    					$args = array(
    						'post_type' => 'novosti',
    						'posts_per_page' => '5',
    						'paged' => $paged
    					);
    
    					$wp_query = new WP_Query( $args );
    					while ( $wp_query->have_posts() ) : $wp_query->the_post();
    				?>
    				<?php
    					$thumb_id = get_post_thumbnail_id();
    					$thumb_url = wp_get_attachment_image_src($thumb_id,'thumbnail', true);
    				?>
    
    			    <div class="similar-materials-item">
    				    <a href="<?php the_permalink(); ?>">
    				        <div class="similar-materials-item-img">
    				            <?php if ($thumb_url[0]) { ?><img alt="" src="<?php echo $thumb_url[0] ?>" class="img-polaroid"><?php } ?>
    				        </div>
    				        <div class="similar-materials-item-title"><?php the_title(); ?></div>
    				    </a>
    				</div>
    				<?php endwhile; wp_reset_postdata(); ?>
    			</div>

    Я бы не рискнул использовать глобальные переменные WP в своих функциях. Речь идет о $wp_query. Лучше переименовать эту переменную.

    Чтобы исключить текущий пост из этой выдачи, добавьте (измените) набор аргументов на этот

    $args = array(
        'post_type' => 'novosti',
        'posts_per_page' => '5',
        'post__not_in' => array(get_the_ID()), //исключаем ID текущей записи
        'paged' => $paged
    );

    и не совсем понятно использовании пагинации, это чтобы рядом по времени была выдача?

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

    Я бы не рискнул использовать глобальные переменные WP в своих фунуциях.

    Без глобальной переменной WP не работает пагинация. И по чему это риск?

    Без глобальной переменной WP не работает пагинация. И по чему это риск?

    Должна работать, если изменить всюду, где эта переменная используется (в трех местах) вашего кода:

    $wp_query = new WP_Query( $args );
    while ( $wp_query->have_posts() ) : $wp_query->the_post();

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

    Хорошо понял! Спасибо за уделенное время, все работает!

    Еще вопрос! Вот такая конструкция нормально будет работать:

    <?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
    	<?php the_content(); ?>
    	<!-- похожие посты -->
    	<?php
    		$args = array(
    		    'post_type' => 'novosti',
    		    'posts_per_page' => '5',
    		    'post__not_in' => array(get_the_ID()) //исключаем ID текущей записи
    		);
    
    		$news_query = new WP_Query( $args );
    		while ( $news_query->have_posts() ) : $news_query->the_post();
    	?>
    	<?php
    		$thumb_id = get_post_thumbnail_id();
    		$thumb_url = wp_get_attachment_image_src($thumb_id,'thumbnail', true);
    	?>
    	<?php if ($thumb_url[0]) { ?><img alt="" src="<?php echo $thumb_url[0] ?>" class="img-polaroid"><?php } ?>
            <?php endwhile; wp_reset_postdata(); ?>
    	<!-- похожие посты -->
    
    	<?php comments_template('', true); ?>
    
    <?php endwhile; ?>

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

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