# Изменение поля GUID при создании/обновлении записи
В некоторых случаях бывает удобно записать реальный рабочий URL (адрес) записи в поле GUID. Например, если у нас сложная логика создания URL для записей, лучше сохранить его в поле GUID и использовать по мере необходимости.
## Пример кода для сохранения URL записи в поле GUID таблицы wp_posts
### Изменение поля GUID при создании/обновлении записи
Чтобы автоматически обновлять поле GUID, когда мы создаем или редактируем запись, можно использовать следующий код:
```php
add_action( 'save_post', 'permalink_to_post_guid' );
function permalink_to_post_guid( $post_id ){
global $wpdb;
$guid = get_permalink( $post_id ); // Получаем ссы��ку на запись
$wpdb->update( $wpdb->posts, [ 'guid' => wp_make_link_relative( $guid ) ], [ 'ID'=>$post_id ] ); // Обновляем поле GUID
clean_post_cache( $post_id ); // Очищаем кэш записи
}
Изменение поля GUID только для определенного типа записи
Если нужно изменить поле GUID только для определенного типа записи, можно использовать этот код:
add_action( 'save_post_posttype', 'permalink_to_post_guid' );
function permalink_to_post_guid( $post_id ){
global $wpdb;
$guid = get_permalink( $post_id ); // Получаем ссылку на запись
$wpdb->update( $wpdb->posts, [ 'guid' => wp_make_link_relative( $guid ) ], [ 'ID'=>$post_id ] ); // Обновляем поле GUID
clean_post_cache( $post_id ); // Очищаем кэш записи
}
Объяснение кода
- add_action: Эта функция добавляет наш код (функцию) в определенное место в WordPress. В данном случае мы используем её для выполнения кода при сохранении записи.
- get_permalink: Эта функция получает полный адрес (URL) записи.
- $wpdb: Это глобальный объект, который позволяет выполнять запросы к базе данных WordPress.
- wp_make_link_relative: Эта функция преобразует URL в относительный (т.е. убирает часть адреса, которая не нужна).
- clean_post_cache: Эта функция очищает кэш записи, чтобы изменения сразу отобразились.
Теперь вы знаете, как изменять поле GUID для записей в WordPress при их создании или обновлении. Это может быть полезно для обеспечения корректности ссылок на ваши записи.