custom_post_types вывести похожие записи.
-
Как в custom_post_types вывести похожие записи, чтобы пост в котором находимся не отображался в блоке похожих?
-
Какой-нибудь код написали уже? Потому что проще подсказать в коде, чем объяснять на пальцах..
<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; ?>
Просто у меня комменты показываются после похожих постов, и как я понял комменты должны быть в цикле.
- Тема «custom_post_types вывести похожие записи.» закрыта для новых ответов.