Intereting Posts
WordPress подавляет расширения страниц! Количество страниц – несколько (пользовательских) типов сообщений пользовательские элементы wp_dropdown_categories в wordpress Добавить переменную для URL или установить сеанс Поврежденное навигационное меню? Изменение правил перезаписи для использования <пользовательский тип сообщения> / категория / <пользовательский термин таксономии> / сокращение количества вызовов wp_query Как передать пользовательский параметр WP_Query для фильтрации в pre_get_posts Как добавить стиль-mobile css из основной темы в дочернюю? Может отображать только одно из двух настраиваемых меню Ошибка do_shortcode в шаблоне WooCommerce Изменить имя «От» в модуле MailChimp STS Пользовательский тип сообщения с загрузкой файла – нужно «установить как поле» вместо «отправить в редактор», Ошибка анализа: синтаксическая ошибка Как добавить встроенное слово после имени автора комментария автора?

Проблема с несколькими тегами в постоянных ссылках

Я настроил %tag% для permalinks в wordpress. Вот как использовать первый тег в постоянных ссылках . Но при публикации нескольких тегов в сообщении я сталкиваюсь с какой-то проблемой.
Предположим, что я написал три тега для сообщения, это: Backlinks, All About SEO, Web Promotion
Поэтому здесь я хочу использовать первое имя тега только в permalinks, но проблема в том, что все теги сортируются по символу в сообщении, поэтому, к сожалению, в permalink он будет использовать www.example.com/All About SEO/page/ хотя я хочу используйте первый tag в постоянных ссылках, поэтому в этом случае желаемая постоянная ссылка должна быть такой: www.example.com/Backlinks/page/
Итак, как использовать первое имя тега для постоянных ссылок, пожалуйста, помогите 🙂

Solutions Collecting From Web of "Проблема с несколькими тегами в постоянных ссылках"

В таблице term_relationships для term_order который, по-видимому, подразумевает, что можно установить порядок терминов. Тем не менее, похоже, что на самом деле это не работает – ядро ​​его не использует.

Немного wp_set_object_terms в wp_set_object_terms , функция, которую get использует для назначения терминов объектам (типам сообщений, пользователям), обнаружила этот маленький камень:

 <?php $t = get_taxonomy($taxonomy); if ( ! $append && isset($t->sort) && $t->sort ) { $values = array(); $term_order = 0; $final_tt_ids = wp_get_object_terms($object_id, $taxonomy, array('fields' => 'tt_ids')); foreach ( $tt_ids as $tt_id ) if ( in_array($tt_id, $final_tt_ids) ) $values[] = $wpdb->prepare( "(%d, %d, %d)", $object_id, $tt_id, ++$term_order); if ( $values ) if ( false === $wpdb->query( "INSERT INTO $wpdb->term_relationships (object_id, term_taxonomy_id, term_order) VALUES " . join( ',', $values ) . " ON DUPLICATE KEY UPDATE term_order = VALUES(term_order)" ) ) return new WP_Error( 'db_insert_error', __( 'Could not insert term relationship into the database' ), $wpdb->last_error ); } 

Кажется, что можно установить аргумент sort для таксономий в true, и WP будет сортировать вещи для вас. Аргумент sort кажется недокументированным, но немного тестового кода показывает, что он действительно работает.

 <?php add_action('init', 'wpse72703_modify_tags', 100); function wpse72703_modify_tags() { global $wp_taxonomies; $wp_taxonomies['post_tag']->sort = true; } 

Единственное, что вам нужно будет делать по-разному в использовании тегов в постоянных ссылках, это изменить это:

 $tags = get_the_tags( $post->ID ); 

чтобы …

 $terms = wp_get_object_terms($post->ID, 'post_tag', array( 'orderby' => 'term_order', )); 

Это заставит возвращенные условия уважать порядок, в котором вы их добавили.