Вывод новостей по меткам!
Доброго времени суток!
Кто знает, как вывести новости по меткам? Я вывел новости по рубрике, а вот вывести по тегам вообще не получается, подскажите пожалуйста какой функцией вывести?
Спасибо!
Доброго времени суток!
Кто знает, как вывести новости по меткам? Я вывел новости по рубрике, а вот вывести по тегам вообще не получается, подскажите пожалуйста какой функцией вывести?
Спасибо!
Используйте get_tags или get_terms. И в связке к ним get_posts для получения самих новостей.
Спасибо!
Подскажите пожалуйста как правильно прописать связку, я вывожу категории следующим кодом:
<?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?
Заранее большое человеческое спасибо!
Вы объясните точнее, в каком месте Вы выводите? На главной, на странице категорий или архивов, на странице тега и в самой новости? Ну ё-моё
Вот есть код, который подбирает "Похожие новости" на основе тегов:
<?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(); } ?>Чем больше Вы тегов записям своих прописываете, тем точнее он выводит результаты
Извините
Я вывожу новости в archive.php, мне бы не похожие, а конкретные, по ID тега, баловался с этим кодом, что-то вообще ничего не получается, пустое место вместо новостей.
Подскажите пожалуйста!
Знаете я ничего не пойму? Почему надо придумывать какой-то код. Берем обычную тему, которая поставляется WP под названием
Вот код простого странички index.php, которая используется везде. И Для вывода записей по меткам, по рубрикам, просто запись, страница, архив. Эдакий комбайн.
classic. В ней ничего нет лишнего, самое основное. Итак, к примеру, переходим в категорию "Движки сайтов" и нам отображаются все материалы, типа Вордпресс, Джумла, , DLE, Битрикс и так далее. Переходим в какую-нибудь метку, к примеру "Бесплатные движки" и нам теперь отображаются только посты с этой меткой, а именно записи Вордпресс и Джумла. В чем секрет? А нет секрета, это всё выводит обычный цикл WP, он сам знает, что это страница Рубрика такой-то, надо выводить материалы к ней относящиеся, а это страница Меток, надо выводит записи с этой меткой, а если это архив за 2013 год, то записи этого года. Никаких хитровыдуманных запросов<?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, тогда Да, надо думать, как построить специальный запрос.А теперь специфический код для мега случаев
<?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 в чем то я тебя понимаю, это адов ресурс, делать как тут написано смысла нет ничего не работает - это може показаться шизой но это так, на просторах инета нашел более действенный вариант рабочий, вотпример кода:
global $post; $posts = get_posts( array( 'numberposts' => 5, 'category' => '', 'orderby' => 'date', 'order' => 'DESC', 'include' => array(), 'exclude' => array(), 'meta_key' => '', 'meta_value' =>'', 'post_type' => 'news', 'suppress_filters' => true,) ); foreach( $posts as $post ) { setup_postdata($post); ?> <p> <?php echo get_post()->post_content; ?> <br> <?php echo get_post()->post_date; ?> </p>смысл глобальный такой - WP устроен таким образом - у него есть настройки и действия с содержимым по умолчанию (стандарт который в нем зашит и который ты видишь в консоли управления после установки WP), а есть возможность вмешиваться и добавлять свои разделы и функционал (важно помнить что в некоторых случаях эти вмешательства изменяют стандартные настройки и параметры а значит после отработки "вмешательства" необходимо сбрасывать к дефолтному состоянию (серия функций wp_reset_имя)). так вот логика такая - чтобы вывести что то созданое тобой то это надо сначала получить (серия фуyкций get_имя() ), а чтобы получить то что надо - нужно это получение настроить (вот тут нюансов много - тянет на отдельную статью), настройка сводится в большинстве случаев к настройке глобальной переменной $post (это понятно в массе своей имеем дело с постами - по русски с записями), смысл настройки - записать в эту переменную массив с набором "ключ" => "значение" (вот какие ключи и значения кое как описаны на данном ресурсе - как это делал я смотри в примере кода). А вот как вывести это все смотри мой пример кода - потому как на этом ресурсе представлена какая то нерабочая лажа (или скорее всего представленные сдесь примеры работают с дефолтными параметрами WP). как нить может получше примеры приведу а мож видосик на ютуб запилю - потому как все волосы на себе выдрал но ничего сделать не получилось при помощи этого сайта.