Таксономии в виде подкатегорий

(Ответов: 1, Просмотров: 2705)
  1. Дипломник Аватар для JaTony
    • Регистрация: 02.12.2010
    • Сообщений: 163
    • Репутация: 29
    Посчу сюда, бо уже моСК поломал об это дело, может кто уже делал такое :)

    В WP стандартом идут таксономии в виде категорий category/post_name.html
    под них в пермалинксах ставим /%category%/%postname%.html
    это банальная структура для многих сайтов.

    в вордпрессе конечно есть вложенные категории, но ситуевина такая, что категорий 250 штук, а под-категории одинаковые (10 штук),
    т.е. смысла нет раздувать список категорий, т.к. в итоге это выйдет 2500 категорий... т.е. застрелится можно если юзать такое дерево.

    создана доп таксономия, так что при создании поста выбрать можно и категории и под.категорию (в отдельном списке галочки),
    выбираем что-то из списка где 250 категорий и выбираем еще что-то из списка где 10 под-таксономий.

    все как бы гуд, заходим на пост, урл такого вида:
    domain.com/my_category/my_post.html (пермалинсы стоят такие: /%category%/%postname%.html) (само слово "category/" естественно вырезается)
    у "категории" есть список под.категорий, который выводится

    далее жмем на урл вида:
    domain.com/my_category/sub_taxonomy/

    в результате хотелось бы увидеть списко постов из данной категории, соответсвующий данной подкатегории, но выводится 404 ошибка
    причем если поменять пемалинкс на /%category%/%my_taxonomy%/%postname%.html то все работает и выводится список постов из
    данной категории с нужной под-кагорией (таксономией), тут..... я аж за пивом сходил на радостях... :)
    но при таком раскладе на главной и остальных страницах все урлы поломались и имеют такой вид:
    http://domain.com/my_category/%my_ta...post_name.html
    т.е. из-за пермалинкса вставляется прямо с процентами %my_taxonomy% в урл и конечно ни один пост не открывается.

    хочется сделать, чтобы все в плане показа постов работало как с таксономией /%category%/%my_taxonomy%/%postname%.html,
    но чтобы ссылки на посты были нормальными после этого.

    перерыл уже все что только мог, eng инет тоже, т.к. в нашем по этой теме вообще кот наплакал, пААААмАААгите, свихнусь скоро :)
    за реально рабочий вариант, подсказку где прочитать и которая реально поможет, и т.д... с меня wmz :)
    • 0
  2. Дипломник Аватар для JaTony
    • Регистрация: 02.12.2010
    • Сообщений: 163
    • Репутация: 29
    ну вроде как сделал :)

    может кому еще пригодится, напишу как...
    так как перма линксы такие /%category%/%postname%.html
    решил от этого и работать, т.е. на подкатегории (которые таксономии) будет ссылка вида
    domain.com/my_category/sub_taxonomy.html
    а не domain.com/my_category/sub_taxonomy/

    фишка в конце, т.е. это не папка получается, а типа пост, но поста с таким именем нет, поэтому в вордпрессе идет редирект на 404.php в котором я уже и пишу код.
    конечно я понимаю, что это как-то дико выглядит, использовать 404-ый темплейт для вывода постов, но блин работает :) а поисковики-то не будут знать, что это 404-ый темплейт если выводится все нормально.

    короче в 404.php пишем такой код:
    PHP код:
        $url explode("/"$_SERVER['REQUEST_URI']);    $category $url[count($url)-2];    $taxonomy $url[count($url)-1];    $taxonomy substr($taxonomy,0,strpos($taxonomy,'.html')); 
    здесь мы получили урл и распарсили его, опять-таки по тупому через request_uri, возможно поменяю это в ближайщее время, главное было решить другую проблему.

    далее пишем такое:
    PHP код:
                    $the_query = new WP_Query(                     $args = array(                        'tax_query' => array(                            'relation' => 'AND',                                array(                                    'taxonomy' => 'category',                                    'field' => 'slug',                                    'terms' => array( $category )                                ),                                array(                                    'taxonomy' => 'rubriki',                                    'field' => 'slug',                                    'terms' => array( $taxonomy )                                )                        )                    )                ); 

    здесь мы сделали квайресу с AND-ом, чтобы получить все посты из определенной категории (первый массив) category и по slug-у ее получили, и далее делаем выборку из кастомной таксономии (второй массив) rubriki, а так как у нас AND стоит получаем только те посты, которые находятся в соответствующей категории И подкатегории (читай кастомной таксономии).

    ну а далее уже идет вывод таким макаром:
    PHP код:
        if( $the_query->have_posts() ) {        while ($the_query->have_posts()) : $the_query->the_post();            get_template_part'content'get_post_format() );        endwhile;    } else {                        show_not_found('Ничего не найдено''Извините, но данная страница не существует. Пожалуйста попробуйте повторить поиск с другим словосочетанием');        query_posts('posts_per_page=10');        while (have_posts()) : the_post();             get_template_part'content'get_post_format() );        endwhile;     } 
    таким образом, если у нас в искомой квайресе оказались посты, значит это все-таки категория->подкатегория и мы выводим посты, если не оказалось тогда выводим по 404 просто последние посты.

    конечно буду сейчас это дело дорабатывать, бо не очень красиво это, особенно начало и конец кривые, но сам центр в плане получения постов, имхо то что надо :)

    если вдруг кто столкнется с подобной темой и нужна будет помошь, пишите! сам голову поломал пока до всего этого дошел :)

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

    ---------- Сообщение добавлено 23:04 ---------- Предыдущее 23:00 ----------

    чот использовал кнопку вставки php кода в редакторе, ставил нормально построчно и с табуляциями все было, а в итоге фигня получилось, чот в все в одну строку сшило... сорри...
    если кто знает как поправить, напишите плиз, а то такой код не читаем вообще
    • 0

Похожие темы

Темы Раздел Ответов Последний пост
Репост вконтакте в виде кода
Социальные сети 1 22.10.2012 23:39
Письмо счастья в виде ВЕБ страницы
Web программирование 6 13.04.2012 13:22
Письмо счастья в виде ВЕБ страницы
Вопросы от новичков 0 12.04.2012 23:52
Вывод подкатегорий в динамическом сайдбаре вордпресс?
WordPress 5 02.02.2012 22:05
Что вы думаете о таком виде PR'a?
Социальные сети 23 20.11.2011 22:21

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры