Вопрос или проблема
Подключите функцию сохранения поста, чтобы проверить, прикреплен ли термин таксономии. Если он прикреплен, используйте термин таксономии в ярлыке поста, например “таксономия-термин-другие-слова”…
Чтобы решить ваши магические вопросы, вам может понадобиться небольшая цепочка процессов или просто что-то очевидное и простое.
Если я правильно понимаю, в конце концов, текущий пост, который вы сохраняете, изменит свой ярлык (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.
Шаги выполнения задачи
-
Инициализация действия ‘save_post’:
- Подключаем функцию, используя хук ‘save_post’. Это позволит выполнять код при каждом сохранении записи.
-
Получение текущих терминов таксономии:
- Используем
wp_get_object_terms()
для извлечения терминов, связанных с конкретной записью. Вы можете указать конкретную таксономию, такую как ‘category’, ‘post_tag’ и т.д.
- Используем
-
Формирование нового слага:
- После получения термина формируем новый слаг. Обычно он состоит из существующего слага плюс дополнительный термин таксономии.
-
Обновление слага записи:
- Используем
wp_update_post()
для обновления слага записи с новозаданным значением.
- Используем
-
Предотвращение рекурсии:
- Убедитесь, что ваше действие будет удалено после выполнения, чтобы избежать рекурсивного вызова функции.
Пример Кода
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-оптимизации. Важно помнить о предотвращении внезапных зацикливаний за счет временного удаления собственного действия.