it-swarm.com.ru

Как разблокировать пост программно?

Я могу использовать wp_set_post_lock , чтобы временно заблокировать сообщение, так что только я могу редактировать его.

Я могу использовать wp_refresh_post_lock чтобы обновить эту блокировку.

Я могу использовать wp_check_post_lock , чтобы проверить, заблокирован ли пост.

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

Так как я могу снять блокировку почты? Конечно, мне не нужно ждать, пока оно истечет, верно?

2
Pikamander2

На первый взгляд это имеет смысл, но ...

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

Но когда вы удалите это? После сохранения? Нет - пользователь все еще редактирует, поэтому блокировка должна быть включена.

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

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

Конечно, вы все еще можете легко снять такой замок ...

Давайте посмотрим, что это за блокировка и как WP устанавливает ее:

function wp_set_post_lock( $post_id ) {
    if ( ! $post = get_post( $post_id ) ) {
        return false;
    }
 
    if ( 0 == ( $user_id = get_current_user_id() ) ) {
        return false;
    }
 
    $now = time();
    $lock = "$now:$user_id";
 
    update_post_meta( $post->ID, '_edit_lock', $lock );
 
    return array( $now, $user_id );
}

Хорошо, так что он хранится как пользовательский файл с именем _edit_lock, так что ... Просто удалите эту мету, и блокировка будет удалена.

delete_post_meta( $post_id, '_edit_lock')
2
Krzysiek Dróżdż