web-dev-qa-db-ja.com

プログラムで投稿をロック解除する方法

私は 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 );
}

[OK]ので、 '_ edit_lock'というカスタムファイルとして保存されます。このメタを削除すると、ロックが削除されます。

delete_post_meta( $post_id, '_edit_lock')
2