Таксономии в виде подкатегорий - Webmasters.ru - RSS http://webmasters.ru/forum/showthread.php?t=36505 SEO форум вебмастеров - Поисковые системы, оптимизация, раскрутка сайта, оптимизация и продвижение сайта в поисковых системах 1743455963 Elesite CMS 60 http://webmasters.ru/forum/images/wm/misc/rss.png SEO форум вебмастеров 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 кода в редакторе, ставил нормально построчно и с табуляциями все было, а в итоге фигня получилось, чот в все в одну строку сшило... сорри... если кто знает как поправить, напишите плиз, а то такой код не читаем вообще]]>