Сортировка таксономий Wordpress
Новая тема Написать ответ
# Пн Мар 19, 2012 10:49 pmDrKronos Зарег.: 11.03.2008 ; Сообщ.: 13024Ответить с цитатой
По мотивам этого топика. Есть сайт, на странице выводятся таксономии с картинками (новостные сюжеты, допустим). Как сделать так, чтобы они ранжировались по наличию в них более свежего материала. Т.е, если в таксономию добавлена свежая статья, то она должна находится на первом месте. Если в другую таксономию добавлена более свежая статья, то первой в списке таксономий становится эта таксономия.
Нормального решения в кодексе так и не нашел.
# Пн Мар 19, 2012 11:30 pmTaburetkin Зарег.: 25.02.2007 ; Сообщ.: 1426Ответить с цитатой
Код:
<?php
        $cat_array = array();
        $args=array(
          'post_type' => 'post',
          'post_status' => 'publish',
          'posts_per_page' => 10,
          'caller_get_posts'=> 1
          );
        $my_query = null;
        $my_query = new WP_Query($args);
        if( $my_query->have_posts() ) {
          while ($my_query->have_posts()) : $my_query->the_post();
            $cat_args=array('orderby' => 'none');
            $cats = wp_get_post_terms( $post->ID , 'category', $cat_args);
            foreach($cats as $cat) {
              $cat_array[$cat->term_id] = $cat->term_id;
            }
          endwhile;
        }
        if ($cat_array) {
          foreach($cat_array as $cat) {
            $category = get_term_by('ID',$cat, 'category');
            echo '<a href="' . esc_attr(get_term_link($category, 'category')) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a>'.'<br />';
          }
        }
        wp_reset_query();
    ?>

# Вт Мар 20, 2012 12:02 amDrKronos Зарег.: 11.03.2008 ; Сообщ.: 13024Ответить с цитатой
Taburetkin, спасибо, завтра попробую. Drinks or Beer А как этот скрипт поведет себя, если новая запись добавлена сразу в несколько таксономий допустим (story/1/ и story/2/)? Может я не так выразился, таксономия же одна, нужно сортировать значения таксономии по наличию свежих записей, которым назначена эта таксономия Smile
И еще, а где тут вписывать номер таксономии?

Вот примерно то, что нужно
http://www.lenta.ru/story/
# Вс Мар 25, 2012 5:36 pmTaburetkin Зарег.: 25.02.2007 ; Сообщ.: 1426Ответить с цитатой
в смысле таксономия одна?

у тебя слисок категорий:
Валенки
Тапки
Лапти
Ласты

ты добаляешь новый пост в категорию "Лапти" и список реформируется автоматом в:

Лапти
Валенки
Тапки
Ласты
# Вс Мар 25, 2012 7:07 pmDrKronos Зарег.: 11.03.2008 ; Сообщ.: 13024Ответить с цитатой
Я не про категории, Taburetkin. Категория - это отдельная таксономия, как и тэги. Т.е лапти, валенки, тапки - это значения таксономии "category".
Я про созданные мною таксономии. Вот типа как тут
В итоге, помимо /category/[namecategory] есть еще /story/[namestory]. Аргументы которой (story/1 story/2) нужно сортировать на странице story/ по свежести добавленного в эти таксономии постов.
# Вс Мар 25, 2012 7:58 pmTaburetkin Зарег.: 25.02.2007 ; Сообщ.: 1426Ответить с цитатой
это то же самое только вид сбоку

код что выше работает и для таксономии "story" изменив "category" на "story":

Код:
<?php
         $cat_array = array();
         $args=array(
           'post_type' => 'post',
           'post_status' => 'publish',
           'posts_per_page' => 10,
           'caller_get_posts'=> 1
           );
         $my_query = null;
         $my_query = new WP_Query($args);
         if( $my_query->have_posts() ) {
           while ($my_query->have_posts()) : $my_query->the_post();
             $cat_args=array('orderby' => 'none');
             $cats = wp_get_post_terms( $post->ID , 'story', $cat_args);
             foreach($cats as $cat) {
               $cat_array[$cat->term_id] = $cat->term_id;
             }
           endwhile;
         }
         if ($cat_array) {
           foreach($cat_array as $cat) {
             $category = get_term_by('ID',$cat, 'story');
             echo '<a href="' . esc_attr(get_term_link($category, 'story')) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a>'.'<br />';
           }
         }
         wp_reset_query();
     ?>

Новая тема Написать ответ    ГЛАВНАЯ ~ ТЕХНИЧЕСКИЕ ВОПРОСЫ
 
Любое использование материалов, размещенных на ArmadaBoard.com, без разрешения владельцев ArmadaBoard.com запрещено.