Intereting Posts
Переписывать URL (я думаю?) 404 ошибка при разбиении на страницы пользовательского типа сообщения admin_enqueue_scripts не корректно обрабатывает JS-файл Увольнение page_publish, где страница – дочерняя страница Использование переменных $ namesename Каков правильный способ включения встроенного javascript-источника? Создание отдельных каналов для пользовательских типов сообщений Удаление основной ссылки на Jetpack из меню display_number отображается вне указанного диапазона Как увеличить размер загрузки только при редактировании специальных страниц? разбиение на страницы для списков категорий (пользовательский тип сообщения) Как показать подменю только с помощью wp_nav_menu () Сделайте первое изображение миниатюром сообщения, не устанавливая его как отображаемое изображение Не удается получить доступ к веб-сайту WordPress с внешнего IP-адреса, в то время как он работает нормально Связанный запрос показывает то же изображение в цикле

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

Я настроил %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', )); 

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