Дипломник | ну вроде как сделал :) может кому еще пригодится, напишу как... так как перма линксы такие /%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 кода в редакторе, ставил нормально построчно и с табуляциями все было, а в итоге фигня получилось, чот в все в одну строку сшило... сорри... если кто знает как поправить, напишите плиз, а то такой код не читаем вообще |