Intereting Posts
Как запросить два метаполя и отобразить результаты между ними Являются ли почтовые идентификаторы надежными? Специфические параметры среды Запросить настраиваемые типы сообщений и имя категории? массовая генерация тэгов таксономии wp из wp title с собственным скриптом php Условный оператор в WP SQL-запросе Сообщения на странице не возвращают правильный номер Можете ли вы создать локальную сеть wordpress / multisite install на mac с субдоменами? Нужно ли нам менять дочерний файл functions.php, чтобы требовать / включать дочерние файлы dir, когда мы добавляем перенаправляемый файл.php в дочернюю тему Показывать объявления в определенной категории и ее подкатегориях Огромное количество 404 страниц, которые появляются Multisite – получение 404 для дополнительного сайта, созданного с использованием субдомена Как создать дочерний / дочерний пользователь под родительским пользователем Динамически вставлять статью в начало архива таксономии – или? Как вставить виджеты в сообщение?

Почему идентификаторы в URL-адресах не работают, но слизняки?

Я потерян, я не понимаю, почему это работает

http://website.com/?tag=my-cat-slug 

и не

 http://website.com/?tag=15 

Это действительно раздражает, потому что wp_dropdown_categories() только предоставляет идентификаторы как значения.

Я попытался изменить постоянные ссылки на настройки по умолчанию вместо перезаписи:

 http://website.com/?p=123 

Но ничего не изменилось

Solutions Collecting From Web of "Почему идентификаторы в URL-адресах не работают, но слизняки?"

Потому что переменная запроса tag ожидает значения в терминах slug. Он будет искать термин с slug '15' (который, по-видимому, не существует).

И, да, его довольно разочаровывает то, что wp_dropdown_categories() использует идентификатор как значение, а не пул. Это связано с тем, что оно первоначально использовалось только для категорий (для которых обычно используются идентификаторы, а не пули), в отличие от общих таксономий.

Однако на этом есть этот билет . Я создал этот метод , который может позволить вам использовать wp_dropdown_categories() использования значения slugs, а не идентификаторов.

Для справки (следующий класс должен войти в плагин):

 /* * A walker class to use that extends wp_dropdown_categories and allows it to use the term's slug as a value rather than ID. * * See http://core.trac.wordpress.org/ticket/13258 * * Usage, as normal: * wp_dropdown_categories($args); * * But specify the custom walker class, and (optionally) a 'id' or 'slug' for the 'value' parameter: * $args=array('walker'=> new SH_Walker_TaxonomyDropdown(), 'value'=>'slug', .... ); * wp_dropdown_categories($args); * * If the 'value' parameter is not set it will use term ID for categories, and the term's slug for other taxonomies in the value attribute of the term's <option>. */ class SH_Walker_TaxonomyDropdown extends Walker_CategoryDropdown{ function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ){ $pad = str_repeat('&nbsp;', $depth * 3); $cat_name = apply_filters('list_cats', $category->name, $category); if( !isset($args['value']) ){ $args['value'] = ( $category->taxonomy != 'category' ? 'slug' : 'id' ); } $value = ($args['value']=='slug' ? $category->slug : $category->term_id ); $output .= "\t<option class=\"level-$depth\" value=\"".$value."\""; if ( $value === (string) $args['selected'] ){ $output .= ' selected="selected"'; } $output .= '>'; $output .= $pad.$cat_name; if ( $args['show_count'] ) $output .= '&nbsp;&nbsp;('. $category->count .')'; $output .= "</option>\n"; } } 

Применение

 $args=array( 'walker'=> new SH_Walker_TaxonomyDropdown(), 'value'=>'slug', .... ); wp_dropdown_categories($args); 

Параметр «значение» необязательный. Значение по умолчанию будет «id» для категорий и «slug» для других таксономий.