Таксономии в виде подкатегорий - Webmasters.ru - RSS
http://webmasters.ru/forum/showthread.php?t=36505
SEO форум вебмастеров - Поисковые системы, оптимизация, раскрутка сайта, оптимизация и продвижение сайта в поисковых системах1743455963Elesite CMS60http://webmasters.ru/forum/images/wm/misc/rss.pngSEO форум вебмастеров Webmasters.ru
http://webmasters.ru/forum
Таксономии в виде подкатегорий by JaTony
http://webmasters.ru/forum/showpost.php?p=366703
Sat, 24 Nov 2012 21:01:21 GMTПосчу сюда, бо уже моСК поломал об это дело, может кто уже делал такое :)
В 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_taxonomy%/post_name.html
т.е. из-за пермалинкса вставляется прямо с процентами %my_taxonomy% в урл и конечно ни один пост не открывается.
хочется сделать, чтобы все в плане показа постов работало как с таксономией /%category%/%my_taxonomy%/%postname%.html,
но чтобы ссылки на посты были нормальными после этого.
перерыл уже все что только мог, eng инет тоже, т.к. в нашем по этой теме вообще кот наплакал, пААААмАААгите, свихнусь скоро :)
за реально рабочий вариант, подсказку где прочитать и которая реально поможет, и т.д... с меня wmz :)Таксономии в виде подкатегорий by JaTony
http://webmasters.ru/forum/showpost.php?p=367073
Sun, 25 Nov 2012 21:04:12 GMTну вроде как сделал :)
может кому еще пригодится, напишу как...
так как перма линксы такие /%category%/%postname%.html
решил от этого и работать, т.е. на подкатегории (которые таксономии) будет ссылка вида
domain.com/my_category/sub_taxonomy.html
а не domain.com/my_category/sub_taxonomy/
фишка в конце, т.е. это не папка получается, а типа пост, но поста с таким именем нет, поэтому в вордпрессе идет редирект на 404.php в котором я уже и пишу код.
конечно я понимаю, что это как-то дико выглядит, использовать 404-ый темплейт для вывода постов, но блин работает :) а поисковики-то не будут знать, что это 404-ый темплейт если выводится все нормально.
короче в 404.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, возможно поменяю это в ближайщее время, главное было решить другую проблему.
далее пишем такое:
$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 стоит получаем только те посты, которые находятся в соответствующей категории И подкатегории (читай кастомной таксономии).
ну а далее уже идет вывод таким макаром:
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 кода в редакторе, ставил нормально построчно и с табуляциями все было, а в итоге фигня получилось, чот в все в одну строку сшило... сорри...
если кто знает как поправить, напишите плиз, а то такой код не читаем вообще array( 'relation' => 'AND', array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => array( $category ) ), array( 'taxonomy' => 'rubriki', 'field' => 'slug', 'terms' => array( $taxonomy ) ) ) ) );
здесь мы сделали квайресу с AND-ом, чтобы получить все посты из определенной категории (первый массив) category и по slug-у ее получили, и далее делаем выборку из кастомной таксономии (второй массив) rubriki, а так как у нас AND стоит получаем только те посты, которые находятся в соответствующей категории И подкатегории (читай кастомной таксономии).
ну а далее уже идет вывод таким макаром:
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 кода в редакторе, ставил нормально построчно и с табуляциями все было, а в итоге фигня получилось, чот в все в одну строку сшило... сорри...
если кто знает как поправить, напишите плиз, а то такой код не читаем вообще]]>