web-dev-qa-db-fra.com

Fonction permettant de modifier le statut de publication si l'utilisateur actuel et l'auteur de publication sont identiques

Je cherche à forcer un article à revenir au brouillon s'il est publié par l'auteur. Voici la fonction que j'ai écrite jusqu'à présent:

function check_user_publish () {

$user_id = get_current_user_id();
$author_id = the_author_meta( 'ID' );
$postID = the_ID();

if ($user_id == $author_id) {

    $query = array(
        'ID' => $postID,
        'post_status' => 'draft',
    );
    wp_update_post( $query, true );
}} add_action('wp_update_post', 'check_user_publish');

Logiquement, je pense que cela semble correct, mais lorsque je fais un test, le statut ne revient pas à "brouillon". Je teste localement en utilisant Vagrant et VirtualBox.

1
Rob Gleeson

Je n'ai trouvé aucune action appelée wp_update_post. Êtes-vous sûr que c'est valide? Essayons le hook publish_post.

add_action('publish_post', 'check_user_publish', 10, 2);

function check_user_publish ($post_id, $post) {

    $user_id = get_current_user_id();

    if ($user_id != $post->post_author)
        return;

    $query = array(
        'ID' => $post_id,
        'post_status' => 'draft',
    );
    wp_update_post( $query, true );

}}

code non testé

1
Sisir