Как подключить функцию сохранения записи, чтобы использовать термины таксономии в слаге записи?

Вопрос или проблема

Подключите функцию сохранения поста, чтобы проверить, прикреплен ли термин таксономии. Если он прикреплен, используйте термин таксономии в ярлыке поста, например “таксономия-термин-другие-слова”…

Чтобы решить ваши магические вопросы, вам может понадобиться небольшая цепочка процессов или просто что-то очевидное и простое.

Если я правильно понимаю, в конце концов, текущий пост, который вы сохраняете, изменит свой ярлык (url), добавив любое “принадлежащее” имя термина в url (ярлык) поста?

Сценарий A)
Если это НЕ автоматизированный процесс/пакетная обработка, просто отредактируйте ярлык под заголовком поста и добавьте нужные слова, затем нажмите на обновление поста.

Сценарий B)
Подключитесь к действию save_post и сделайте множество вещей:

Сначала посмотрите на: Codex для:

wp_get_object_terms($post_id...
wp_set_object_terms($post_id...

В конечном итоге процесс вызовет:

wp_update_post(array(
    'ID' => $post_id,
    'post_name' => 'some-new-slug'
));

Работая внутри add_action('save_post', 'do_stuff') с wp_update_post(), помните, чтобы удалить ВАШЕ действие, когда вы закончите, чтобы предотвратить классическую бесконечную петлю.

Вы также должны решить, какой термин вы хотите использовать? категория? тег? цвета-продуктов? Все они и другие таксономии могут существовать или быть связаны в одном посте.

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

function do_stuff($post_id){
    remove_action('save_post', 'do_stuff');
    global $post;
    $current_slug = $post->post_name;
    $categories = wp_get_object_terms($post_id, 'category', array('fields' => 'slug'));
    foreach(... смотрите ссылку на codex выше, вам может понадобиться только ОДИН slug для объединения.

    $new_slug = $current_slug.'-'.$category_slug;

    wp_update_post(array(
        'ID' => $post_id,
        'post_name' => $new_slug
    ));

}
add_action('save_post', 'do_stuff');

Надеюсь, вы получили немного мяса на костях или Fläsk på bena, как мы говорим в Швеции.

Ответ или решение

Чтобы интегрировать функцию сохранения поста с использованием термина таксономии в ссылке на пост (slug), необходимо установить хук на действие ‘save_post’. Это позволит автоматически изменять ссылку на запись в соответствии с прикрепленным термином таксономии. Приведем шаги и пример кода для решения данной задачи на WordPress.

Шаги выполнения задачи

  1. Инициализация действия ‘save_post’:

    • Подключаем функцию, используя хук ‘save_post’. Это позволит выполнять код при каждом сохранении записи.
  2. Получение текущих терминов таксономии:

    • Используем wp_get_object_terms() для извлечения терминов, связанных с конкретной записью. Вы можете указать конкретную таксономию, такую как ‘category’, ‘post_tag’ и т.д.
  3. Формирование нового слага:

    • После получения термина формируем новый слаг. Обычно он состоит из существующего слага плюс дополнительный термин таксономии.
  4. Обновление слага записи:

    • Используем wp_update_post() для обновления слага записи с новозаданным значением.
  5. Предотвращение рекурсии:

    • Убедитесь, что ваше действие будет удалено после выполнения, чтобы избежать рекурсивного вызова функции.

Пример Кода

function обновить_слаг_с_термином_таксономии($post_id){
    // Удаляем хук, чтобы предотвратить зацикливание
    remove_action('save_post', 'обновить_слаг_с_термином_таксономии');

    // Проверяем, что не происходит автосохранение
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }

    // Получаем термин таксономии, например, категории
    $термины = wp_get_object_terms($post_id, 'category', array('fields' => 'slug'));

    // Проверяем, что термин существует и создаем новый слаг
    if (!empty($термины) && is_array($термины)) {
        $термин_слаг = $термины[0]; // Берем первый термин
        $пост = get_post($post_id);
        $текущий_слаг = $пост->post_name;
        $новый_слаг = $термин_слаг . '-' . $текущий_слаг;

        // Обновляем пост
        wp_update_post(array(
            'ID' => $post_id,
            'post_name' => $новый_слаг
        ));
    }

    // Восстанавливаем хук
    add_action('save_post', 'обновить_слаг_с_термином_таксономии');
}

add_action('save_post', 'обновить_слаг_с_термином_таксономии');

Заключение

Применение данного метода позволяет динамически изменять структуру URL для постов на основе связанных терминов таксономии. Это улучшает структуру URL, повышая читаемость и содействуя лучшей SEO-оптимизации. Важно помнить о предотвращении внезапных зацикливаний за счет временного удаления собственного действия.

Оцените материал
Добавить комментарий

Капча загружается...