Intereting Posts
Использую ли я функцию flush_rewrite_rules в нужном месте? Как сделать должности не классифицированными Где ввести код для получения идентификатора терминов таксономии? переопределить категорию со страницей, используя правило перезаписи После добавления файлов локализации mo в WP 3.8.1 установка backend показывает новое обновление до 3.8.1 wp_mail () не работает на сервере динамическая страница не проиндексирована Один из моих плагинов сломался, когда я попытался его обновить, как я могу безопасно удалить его? Скрипты очереди в нижний колонтитул Разбиение на страницы пользовательских типов сообщений Как отображать постоянные ссылки вместо страниц? get_adjacent_post – в том же сроке не работает Изображение не работает Выходной массив в одну ячейку таблицы Невозможно использовать старый slug – это всего 301 место на главной странице сайта

Запрос пользовательской таксономии по термину id?

Я создал пользовательский тип сообщения и пользовательскую таксономию, но у меня есть проблема.

Когда я обращаюсь к URL- http://www.ithemes.co.kr/?shopcat=galaxy-s , он работает хорошо. Но когда я обращаюсь к URL- http://www.ithemes.co.kr/?shopcat=5 , он возвращает страницу 404. galaxy-s – это таксономический термин slug, но я хочу получить к нему доступ через term_id , как вы можете с категорией: cat=1 . Я предпочитаю cat=1 .

Что я могу сделать?

Это не поддерживается по умолчанию, но вы можете преобразовать числовые термины обратно в пули с помощью pre_get_posts hook. Я тестировал это с помощью WP 3.0.1, но в 3.1 обработка запросов таксономии изменилась, поэтому я не знаю, будет ли это работать по умолчанию или если есть лучший способ сделать это.

 add_action( 'pre_get_posts', 'wpse6066_pre_get_posts' ); function wpse6066_pre_get_posts( &$wp_query ) { if ( $wp_query->is_tax ) { if ( is_numeric( $wp_query->get( 'term' ) ) ) { // Convert numberic terms to term slugs $term = get_term_by( 'term_id', $wp_query->get( 'term' ), $wp_query->get( 'taxonomy' ) ); if ( $term ) { $wp_query->set( 'term', $term->slug ); } } } } 

Необычно, что вы предпочитаете цифровую версию, многие выбрали бы термин slug для SEO-причин.

Эти несколько строк очень полезны для wp_dropdown_categories используемых в пользовательских таксономах для подсегмента списка бэкэнда (edit.php). Поскольку значения в списке являются term id и не пригодны для использования, как и для выбора подбора в запросе. Части кода ниже использовались в классе, управляющем настраиваемым типом сообщения и пользовательской таксономией.

 add_action( 'restrict_manage_posts', array(&$this,'restrict_manage_writer_posts') ); add_action( 'pre_get_posts', array(&$this,'wpse6066_pre_get_posts' ) ); function restrict_manage_writer_posts () { $selected = ""; if ( isset ( $_GET['writer_name'] ) ) { $selected = $_GET['writer_name']; } $dropdown_options = array( 'taxonomy' => 'writer', 'show_option_all' => __( 'View all writers' ), 'hide_empty' => 0, 'hierarchical' => 1, 'show_count' => 0, 'orderby' => 'name', 'name' => 'writer_name', 'selected' => $selected ); wp_dropdown_categories( $dropdown_options ); } /** * to fixes wp_dropdown_categories id value in option * thanks to http://wordpress.stackexchange.com/questions/6066/query-custom-taxonomy-by-term-id */ function wpse6066_pre_get_posts( &$wp_query ) { if ( $wp_query->is_tax ) { ; if ( is_numeric( $wp_query->get( 'writer_name' ) ) ) { // Convert numberic terms to term slugs for dropdown $term = get_term_by( 'term_id', $wp_query->get( 'writer_name' ), 'writer' ); if ( $term ) { $wp_query->set( 'writer_name', $term->slug ); } } } }