Intereting Posts
Войдите в WordPress, нажав ссылку и указав usernaname и пароль в url сила зарегистрированный пользователь как продавец Выбранный выбор jquery Не работает в плагине Проблема с перенаправлением страницы автора Как скрыть текстовую область на экране «Редактировать сообщение» Я не могу получить доступ к моей странице администратора после изменения основного URL-адреса Добавить информацию о категории после публикации? Можно ли использовать WordPress в качестве онлайн-портфолио для текстового контента? Какую тему я бы искал? Отдельные страницы WordPress CSS и JS-ссылки Подключиться, чтобы добавить новую ссылку wp admin? Использование Javascript для обнаружения события нажатия клавиш в текстовом редакторе Отменить одноименную запись Как переместить веб-сайт WordPress с учетной записи хостинга на localhost Нужно элегантное решение для объявления значения двух переменных на основе количества сообщений Мне нужны идеи для сложного меню

Не могут ли пользовательские таксономии иметь одинаковые термины (слизняки) в качестве категорий?

Я знал, что нельзя использовать одни и те же термины (термин «пули») под категориями и тегами, но, как я понял сегодня, это так и с обычными таксономиями.

Например, если мой сайт имеет категорию под названием Linux (linux) и я хочу создать собственный таксономический термин под названием «Linux», он будет выглядеть как Linux (linux-2) , то есть должны быть пули другой.

И если я попытаюсь переименовать slug обратно в linux , я получу ошибку: «Slug« linux »уже используется другим термином» .

Можно ли иметь одинаковые термины под категориями / тегами и пользовательскими таксономиями (без разрушения хаоса)?


Как воспроизвести проблему?

  1. Создать 3-5 новых сообщений. Создайте новую категорию и тег и назначьте их тем сообщениям (только для целей тестирования).

  2. Сохранить настройки постоянной ссылки.

  3. создайте два новых термина в соответствии с пользовательской таксономией с тем же именем и slug как категория и тег, которые вы создали ранее, и назначьте их новому сообщению под настраиваемым типом сообщения.

  4. Удалите пользовательские таксономии.

  5. Попробуйте воссоздать их, и теперь вы получите сообщение об ошибке: «Slug« XXX »уже используется другим термином».

Иногда это реплицирует проблему, иногда это не так.

Но…

Если вы можете создать категорию (или тег) и пользовательскую таксономию с тем же именем и слизью, сделайте это. Затем переименуйте один из них, и вы заметите, что и категория (или тег), и пользовательская таксономия переименованы!

Solutions Collecting From Web of "Не могут ли пользовательские таксономии иметь одинаковые термины (слизняки) в качестве категорий?"

Оказывается, это ошибка в ядре. Я собирался сообщить об этом, но выяснил, что он существует там, например, годами, и относится к обычным таксономии. Смотрите билеты: # 5809 , # 21950 и # 22023 .

Если все идет так, как планировалось, оно устанавливается в 3,8 3,9 4,1 4.2. ОБНОВЛЕНИЕ: Да, исправлено !


В то же время, вот план по преодолению проблемы – автоматически задайте суффикс суффикса для всех вновь созданных терминов в рамках таксономии:

 /* * Set custom slug suffix for terms of a taxonomy * * http://wordpress.stackexchange.com/q/42550/10691 * http://wordpress.stackexchange.com/q/71304/10691 * http://wordpress.stackexchange.com/q/120096/10691 * https://github.com/WordPress/WordPress/blob/master/wp-includes/taxonomy.php */ add_action( 'created_term', 'aahank_add_suffix_to_term', 10, 3 ); function aahank_add_suffix_to_term( $term_id, $tt_id, $taxonomy ) { if( $taxonomy == 'book' ) { // eg Term name 'PHP' and term slug 'php-books' $term = get_term( $term_id, $taxonomy ); $args = array( 'slug' => $term->slug . '-books' ); wp_update_term( $term_id, $taxonomy, $args ); } } 

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

Чтобы установить префикс вместо этого, измените эту строку в функции:

 $args = array( 'slug' => $term->slug . '-books' ); 

к чему-то вроде этого:

 // eg Term name 'PHP' and term slug 'books-php' $args = array( 'slug' => 'books-' . $term->slug ); 

И как только ошибка исправлена ​​…

Выгрузите базу данных и выполните поиск в регулярном выражении и замените ее с помощью соответствующего текстового редактора, такого как Sublime Text или TextMate (или как это ).

Наверное, это не лучший способ сделать это, но достаточно хорошо, чтобы выполнить свою работу.