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.
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é