J'essaie de déterminer s'il existe un moyen de changer le statut d'un message en mode privé après qu'un commentaire a été soumis. Plus précisément, 3 commentaires, j'ai déjà du code et j'aimerais y ajouter cette fonction. Serait-il possible pour moi de l'accrocher dans ce code, comment?
global $post,$current_user;
$args = array( 'post_id' => $post->ID );
$comment = get_comments( $args );
get_currentuserinfo();
if ($post->post_author == $current_user->ID && 3 <= count( $comment ) ){
echo do_shortcode( '[button]' );
} elseif ( 3 <= count( $comment ) ) {
//blank
} else {
comment_form();
}
Tu étais assez proche. Vous voulez juste vous connecter au bon moment lorsque le commentaire est enregistré. Ceci n'est pas testé mais devrait fonctionner.
add_action( 'comment_post', 'wpse_make_private_after_3_comments', 10, 2 );
function wpse_make_private_after_3_comments( $comment_ID, $comment_approved ) {
$comment = get_comment( $comment_ID );
$post_ID = $comment->comment_post_ID;
$comments = wp_count_comments( $post_ID );
// You could also access approved, moderated, spam or trashed comments
// from the return object of wp_count_comments().
$comment_count = $comments->total_comments;
// If we only have 1 or 2 comments, we'll bail early
if ( $comment_count < 3 ) {
return;
}
$post_data = array(
'ID' => $post_ID,
'post_status' => 'private'
);
wp_update_post( $post_data );
// You might want to add a wp_redirect() here to
// so people don't automatically see a 404 page
// when the comment saving is complete since the page will be private.
}