Автоматически изменять генерацию слага при создании термина


Мне нужно изменить очистку слизняка при создании термина . Например, я создаю термин с именем 0,5, а автоматически сгенерированный слиток равен 05. Мне нужно добавить тире в положение запятой, указанный слиток будет 0-5.

Это можно сделать, переопределив код в теме functions.php ?

РЕШЕНО:

add_action('wp_insert_term_data', 'slug_save_term_callback', 10, 3 );
function slug_save_term_callback($data, $taxonomy, $args) {
    $name = $data['name'];
    $name = str_replace(',', '-', $name);

    $data['slug'] = $name;

    return $data;

}

Спасибо

Author: javiregpa, 2018-07-04

1 answers

У вас будут такие ошибки, как эта. потому что вы не очищаете название с помощью sanitize_title().

И вы не проверяете наличие дубликатов с помощью wp_unique_term_slug()

Тесты на ошибки:

  1. Добавьте пробелы в имя и увидите пули с пробелами.
  2. После добавления sanitize_title() добавить термин с запятой 5,5 добавить термин с пробелом 5 5 результатов с дублированием.

Так что просто исправьте это так:

add_action('wp_insert_term_data', 'slug_save_term_callback', 10, 3 );
function slug_save_term_callback($data, $taxonomy, $args) {
    $name = $data['name'];
    $name = wp_unique_term_slug(sanitize_title(str_replace(',', '-', $name)), (object) $args);

    $data['slug'] = $name;

    return $data;
}
 1
Author: Shibi, 2018-07-04 17:21:41