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

Вывод новостей по меткам!

Доброго времени суток!

Кто знает, как вывести новости по меткам? Я вывел новости по рубрике, а вот вывести по тегам вообще не получается, подскажите пожалуйста какой функцией вывести?

Спасибо!

0
Гость 2.4 года назад
  • 1
    campusboy1950 cайт: www.youtube.com/c/wpplus

    Используйте get_tags или get_terms. И в связке к ним get_posts для получения самих новостей.

    Alex 2.4 года назад

    Спасибо!
    Подскажите пожалуйста как правильно прописать связку, я вывожу категории следующим кодом:

    <?php 
    $category = get_the_category();
    rsort($category);
    $cat_add_id = $category[0]->term_id;
    $real_id = get_the_ID();                
    
    $args = array('cat' =>$cat_add_id);
    $posts = get_posts($args);
    
    foreach( $posts as $post ){
    	setup_postdata($post);
    	if ($post->ID <> $real_id){
    	?>
    	<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <?php
    	}
    }
    wp_reset_postdata();
    ?>

    Как и куда мне вставить get_tags или get_terms?
    Заранее большое человеческое спасибо!

    campusboy 2.4 года назад

    Вы объясните точнее, в каком месте Вы выводите? На главной, на странице категорий или архивов, на странице тега и в самой новости? Ну ё-моё smile Вот есть код, который подбирает "Похожие новости" на основе тегов:

    <?php 
    	$tags = wp_get_post_tags($post->ID);
    	if ($tags) {
    		 $tag_ids = array();
    		 foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
    		 $args=array(
    		 'tag__in' => $tag_ids, // Сортировка происходит по тегам (меткам)
    		 'orderby'=>rand, // Добавляем условие сортировки рандом (случайный подбор)
    		 'caller_get_posts'=>1, // Запрещаем повторение ссылок
    		 'post__not_in' => array($post->ID),
    		 'showposts'=>6 // Цифра означает количество выводимых записей
    		 );
    		 $my_query = new wp_query($args);
    		 if( $my_query->have_posts() ) {
    			while ($my_query->have_posts()) {
    					$my_query->the_post();
    				?>
    
    					<a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"></a>
    
    				<?php
    			}
    		}
    		 wp_reset_query();
    	}
    ?>

    Чем больше Вы тегов записям своих прописываете, тем точнее он выводит результаты

    Alex 2.4 года назад

    Извинитеsmile
    Я вывожу новости в archive.php, мне бы не похожие, а конкретные, по ID тега, баловался с этим кодом, что-то вообще ничего не получается, пустое место вместо новостей.
    Подскажите пожалуйста!smile

    campusboy 2.4 года назад

    Знаете я ничего не пойму? Почему надо придумывать какой-то код. Берем обычную тему, которая поставляется WP под названием classic. В ней ничего нет лишнего, самое основное. Итак, к примеру, переходим в категорию "Движки сайтов" и нам отображаются все материалы, типа Вордпресс, Джумла, , DLE, Битрикс и так далее. Переходим в какую-нибудь метку, к примеру "Бесплатные движки" и нам теперь отображаются только посты с этой меткой, а именно записи Вордпресс и Джумла. В чем секрет? А нет секрета, это всё выводит обычный цикл WP, он сам знает, что это страница Рубрика такой-то, надо выводить материалы к ней относящиеся, а это страница Меток, надо выводит записи с этой меткой, а если это архив за 2013 год, то записи этого года. Никаких хитровыдуманных запросов smile Вот код простого странички index.php, которая используется везде. И Для вывода записей по меткам, по рубрикам, просто запись, страница, архив. Эдакий комбайн.

    <?php
    /**
     * @package WordPress
     * @subpackage Classic_Theme
     */
    get_header();
    ?>
    
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    
    <?php the_date('','<h2>','</h2>'); ?>
    
    <div <?php post_class() ?> id="post-<?php the_ID(); ?>">
    	 <h3 class="storytitle"><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h3>
    	<div class="meta"><?php _e("Filed under:"); ?> <?php the_tags(',') ?> — <?php the_tags(__('Tags: '), ', ', ' — '); ?> <?php the_author() ?> @ <?php the_time() ?> <?php edit_post_link(__('Edit This')); ?></div>
    
    	<div class="storycontent">
    		<?php the_content(__('(more...)')); ?>
    	</div>
    
    	<div class="feedback">
    		<?php the_tags(); ?>
    		<?php comments_popup_link(__('Comments (0)'), __('Comments (1)'), __('Comments (%)')); ?>
    	</div>
    
    </div>
    
    <?php comments_template(); // Get wp-comments.php template ?>
    
    <?php endwhile; else: ?>
    <p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
    <?php endif; ?>
    
    <?php posts_nav_link(' — ', __('« Newer Posts'), __('Older Posts »'));*/ ?>
    
    <?php get_footer(); ?>

    Возможно, я снова не понял Вашей цели. Но вот на демо-сайте я загрузил демо-данные и проверил, прекрасно всё работает. Возможно у Вас финтиперсовая тема, которая переписывает переменную wp_query, тогда Да, надо думать, как построить специальный запрос.

    campusboy 2.4 года назад

    А теперь специфический код для мега случаев smile

    <?php
    # Проверяем, это точно ли страница метки, а не категории, архива, страницы или записи.
    if( is_tag() ){
    	# Получаем с глобального массива данных slug нашей метки
    	# К примеру у страницы метки "Новости WP" скорее всего будет slug такой novosti-wp
    	$this_tag = $wp_query->queried_object->slug;
    	# Получаем все записи со полученным slug'ом в размере 10 штук
    	$tags_posts = get_posts( array ('numberposts' => 10, 'tag' => $this_tag) );
    	#Данные находятся в массиве, обработаем его, выведя результаты ячеек на экран
    	foreach( $tags_posts as $post ){
    		setup_postdata($post); # разрешаем получать дополнительные данные
    		if ($post->ID <> $real_id){
    			?>
    			<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><br>
    			<?php
    		}
    	}
    	wp_reset_postdata();
    }
    ?>
    Alex 2.4 года назад

    Большое спасибо! Буду пробоватьsmile

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