web-dev-qa-db-fra.com

Changer la visibilité en privé

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();
}
1
David

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.
}
0
brianjohnhanna