web-dev-qa-db-fra.com

Utiliser les commentaires en tant que notes, visibles uniquement pour l'auteur du commentaire

Ma question est exactement la même chose que this , je ne sais pas si elle peut être modifiée, alors je pensais que je posterais à nouveau.

Fondamentalement, j'essaie de créer un scénario similaire à celui du fonctionnement des commentaires. Sur une page, un utilisateur enregistré peut soumettre un commentaire, sauf qu'il est le seul à pouvoir le voir, personne d'autre. Ces commentaires s'appelleraient des notes.

Est-il possible de modifier les commentaires afin que seul l'utilisateur soumis puisse les voir? Je cherche principalement quelque chose qui se trouve juste sous un post, une page, que je peux mettre dans un modèle.

2
Jake

J'ai utilisé _ s comme modèle. Les commentaires sont chargés avec wp_list_comments( array( 'callback' => '_s_comment' ) ); , puis les commentaires sont stylés avec _ s_comment () . C'est ce que vous allez utiliser.

Vous pouvez utiliser get_current_user_id() pour obtenir l'ID utilisateur actuel.

$current_user_id = get_current_user_id();

Vous pouvez obtenir l'ID utilisateur du commentateur avec $comment->user_id. Vous vérifiez ensuite que les deux correspondent.

if ( $current_user_id == $comment->user_id )

Les deux modifications que j'ai apportées sont dans la ligne 11 et 20 .

J'ai ajouté le code dans un Gist et au-dessous.

<?php
if ( ! function_exists( '_s_comment' ) ) :
/**
 * Template for comments and pingbacks.
 *
 * Used as a callback by wp_list_comments() for displaying the comments.
 */
function _s_comment( $comment, $args, $depth ) {
    $GLOBALS['comment'] = $comment;

    $current_user_id = get_current_user_id();

    if ( 'pingback' == $comment->comment_type || 'trackback' == $comment->comment_type ) : ?>

    <li id="comment-<?php comment_ID(); ?>" <?php comment_class(); ?>>
            <div class="comment-body">
                    <?php _e( 'Pingback:', '_s' ); ?> <?php comment_author_link(); ?> <?php edit_comment_link( __( 'Edit', '_s' ), '<span class="edit-link">', '</span>' ); ?>
            </div>

    <?php elseif ( $current_user_id == $comment->user_id ) : ?>

    <li id="comment-<?php comment_ID(); ?>" <?php comment_class( empty( $args['has_children'] ) ? '' : 'parent' ); ?>>
            <article id="div-comment-<?php comment_ID(); ?>" class="comment-body">
                    <footer class="comment-meta">
                            <div class="comment-author vcard">
                                    <?php if ( 0 != $args['avatar_size'] ) { echo get_avatar( $comment, $args['avatar_size'] ); } ?>
                                    <?php printf( __( '%s <span class="says">says:</span>', '_s' ), sprintf( '<cite class="fn">%s</cite>', get_comment_author_link() ) ); ?>
                            </div><!-- .comment-author -->

                            <div class="comment-metadata">
                                    <a href="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?>">
                                            <time datetime="<?php comment_time( 'c' ); ?>">
                                                    <?php printf( _x( '%1$s at %2$s', '1: date, 2: time', '_s' ), get_comment_date(), get_comment_time() ); ?>
                                            </time>
                                    </a>
                                    <?php edit_comment_link( __( 'Edit', '_s' ), '<span class="edit-link">', '</span>' ); ?>
                            </div><!-- .comment-metadata -->

                            <?php if ( '0' == $comment->comment_approved ) : ?>
                            <p class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.', '_s' ); ?></p>
                            <?php endif; ?>
                    </footer><!-- .comment-meta -->

                    <div class="comment-content">
                            <?php comment_text(); ?>
                    </div><!-- .comment-content -->

                    <?php
                            comment_reply_link( array_merge( $args, array(
                                    'add_below' => 'div-comment',
                                    'depth'     => $depth,
                                    'max_depth' => $args['max_depth'],
                                    'before'    => '<div class="reply">',
                                    'after'     => '</div>',
                            ) ) );
                    ?>
            </article><!-- .comment-body -->

    <?php
    endif;
}
endif; // ends check for _s_comment()
0
grappler