WordPress как на ладони
wordpress jino

Вывод постов с помощью WP_Query: запись на текущий пост должна выводиться без ссылки

Хочу вывести нужные посты по ID. Внутри записи должны выводиться ссылки на указанные посты, но запись на текущий пост должна выводиться без ссылки.

К примеру: читать книги нужно в такой последовательности:

  • Том 1 (ссылка на пост)
  • Том 2 (ссылка на пост)
  • Том 3 (текущая запись без ссылки)

Вся загвоздка, чтобы запись в которой находиться пользователь выводилась не ссылкой а просто названием.

Использую для вывода стандартный код WP_Query, но его нужно доработать

 $args = array(
	'post_type' => 'post',
	'orderby' => 'ID',   
	'post__in' =>  array( 4, 52, 49, 59, 56),
);

$query1 = new WP_Query( $args );

// Цикл
if ( $query1->have_posts() ) {
	while ( $query1->have_posts() ) {
		$query1->the_post();
		echo '<li>' . get_the_title() . '</li>';
	}
} else {    
}
wp_reset_postdata();
0
Андрей
2 месяца назад
  • 0
    Kama5410

    В цикле проверяй не текущий ли это пост. Текущий находится в глоб. переменной $post. Будет примерно так:

    $my_posts = get_posts( array(
    	'post_type' => 'post',
    	'include'   =>  array( 4, 52, 49, 59, 56),
    	'orderby'   => 'ID',   
    	//'numberposts' => -1, // не нужен, есть include
    ) );
    
    // есть посты выводим
    if ( $my_posts ) {
    
    	global $post;
    
    	$cur_post = $post; // сохраним текущий пост, потому что ниже переменная будет меняться
    
    	foreach( $my_posts as $post ){
    
    		if( $cur_post->ID == $post->ID ){
    			echo '<li>' . get_the_title() . '</li>';
    		}
    		else {
    			echo '<li><a href="'. get_permalink() .'">' . get_the_title() . '</a></li>';
    		}
    
    	}
    	wp_reset_postdata(); // вернем все переменные обратно
    }
    else {
    	echo 'Постов нет';
    }
    
    Андрей 2 месяца назад

    Спасибо, работает. Как отсортировать посты по IP, которые указываются в массиве?

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация