it-swarm.com.de

Wie schalte ich einen Beitrag programmgesteuert frei?

Ich kann wp_set_post_lock verwenden, um einen Beitrag vorübergehend zu sperren, sodass nur ich ihn bearbeiten kann.

Ich kann wp_refresh_post_lock verwenden, um diese Sperre zu aktualisieren.

Ich kann mit wp_check_post_lock prüfen, ob ein Beitrag gesperrt ist.

... aber wie kann ich die Pfostensperre entfernen? Ich gehe davon aus, dass es eine Funktion namens wp_remove_post_lock oder wp_release_post_lock gibt, aber keine davon scheint zu existieren.

Wie kann ich die Pfostensperre entfernen? Ich muss doch nicht warten, bis die Zeit abgelaufen ist, oder?

1
Pikamander2

Auf den ersten Blick macht es Sinn, aber ...

Wann genau würde diese Funktion verwendet werden? Wenn der Benutzer den Post-Editor öffnet, können Sie sich einfach an diese Aktion anschließen und die Sperre setzen.

Aber wann würden Sie es entfernen? Nach dem Speichern? Nein - Benutzer bearbeitet noch, daher sollte die Sperre aktiviert sein.

Es sollte entfernt werden, nachdem der Benutzer den Tab geschlossen oder den Editor geschlossen hat. Sie können sich jedoch nicht an diese Aktionen von PHP aus binden, da PHP erst benachrichtigt wird, wenn sie eintreten ...

Es gibt also höchstwahrscheinlich keine Funktion zum Entfernen der Sperre, da diese im normalen Gebrauch nicht verwendet werden kann ...

Natürlich können Sie solche Schlösser trotzdem leicht entfernen ...

Schauen wir uns an, was genau diese Sperre ist und wie WP sie setzt:

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, es wird als benutzerdefiniertes Archiv mit dem Namen "_edit_lock" gespeichert. Entfernen Sie einfach dieses Meta und die Sperre wird entfernt.

delete_post_meta( $post_id, '_edit_lock')
2