web-dev-qa-db-ja.com

投稿ごとに1つのコメントにユーザーを制限する方法

私は請願サイトとしてWordPressを使用しており、請願書の登録として機能するようコメントシステムをハッキングしています。 1回の投稿につき1つのコメントのみを投稿するようにユーザーを制限する方法を見つけたいと思います。これまでのところ、下のコードに示すように、各ユーザーをWordPressサイト全体の1つのコメントに制限することができますが、それは私が達成しようとしていることではありません。

繰り返しますが、各ユーザーを投稿ごとに1つのコメントに制限するにはどうすればよいですか。

   <?php
   /*
    * Single Petition Template
    * @package WordPress
    * @subpackage Twenty_Thirteen
    * @since Twenty Thirteen 1.0
    * template author: Facinet Toure
    * website URL: http://mongage.com
   */

 get_header(); ?>

 <div id="primary" class="content-area">
  <div id="content" class="site-content" role="main">
    <?php /* The loop */ ?>
    <?php while ( have_posts() ) : the_post(); ?>
    <?php //get_template_part( 'content', get_post_format() ); ?>
    <!-- post format -->
    <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
        <header class="entry-header">
            <?php if ( has_post_thumbnail() && ! post_password_required() ) : ?>
            <div class="entry-thumbnail">
                <?php the_post_thumbnail('full'); ?>
            </div>
            <?php endif; ?>
            <h1 class="entry-title">
                <?php the_title(); ?>
            </h1>
            <p><span class="rounded-corners alignleft"><?php echo get_avatar( $post->post_author, 74 ) ?></span>
                <span class="author"><?php the_author_meta( 'display_name' ); ?></span>
                <span> | </span>This post currently has
                <?php comments_number( 'no responses', 'one response', '% responses' ); ?>
                .</p>
        </header>
        <!-- .entry-header -->
        <div class="entry-content">
            <?php the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentythirteen' ) ); ?>
            <?php wp_link_pages( array( 'before' => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentythirteen' ) . '</span>', 'after' => '</div>', 'link_before' => '<span>', 'link_after' => '</span>' ) ); ?>
        </div>
        <!-- .entry-content -->

        <footer class="entry-meta">
            <?php twentythirteen_entry_meta(); ?>
            <?php if ( comments_open() && ! is_single() ) : ?>
            <span class="comments-link">
            <?php comments_popup_link( '<span class="leave-reply">' . __( 'Sign the petition', 'twentythirteen' ) . '</span>', __( 'One comment so far', 'twentythirteen' ), __( 'View all % comments', 'twentythirteen' ) ); ?>
            </span><!-- .comments-link -->
            <?php endif; // comments_open() ?>
            <?php edit_post_link( __( 'Edit', 'twentythirteen' ), '<span class="edit-link">', '</span>' ); ?>
            <?php if ( is_single() && get_the_author_meta( 'description' ) && is_multi_author() ) : ?>
            <?php get_template_part( 'author-bio' ); ?>
            <?php endif; ?>
        </footer>
        <!-- .entry-meta --> 
    </article>
    <!-- #post -->

    <p> This post currently has
        <?php comments_number( 'no responses', 'one response', '% responses' ); ?>
        . </p>
    <?php twentythirteen_post_nav(); ?>
    <ol reversed class="commentlist">
        <?php
    //Gather comments for a specific page/post 
    $comments = get_comments(array(
        'post_id' => $post->ID,
        'status' => 'approve' //Change this to the type of comments to be displayed
    ));

    //Display the list of comments
    wp_list_comments(array(
        'per_page' => -1, //Allow comment pagination
        'reverse_top_level' => false, //Show the latest comments at the top of the list,
        'max_depth' => '1',
        'avatar_size' => 0,
    ), $comments);
?>
    </ol>
    <?php // check if user has previously commented the post
        global $current_user;
        if ( !is_user_logged_in() ) {
        echo 'you must be logged in to sign the petition';
        } else {
        $args = array('user_id' => $current_user->ID);
        $usercomment = get_comments($args);
        if(count($usercomment) >= 1) { 
            echo '<p>Vous avez déjà signé cette pétition. S\'il vous plaît partager avec votre famille et vos amis</p>';

        } else { comment_form(); 
        } 
    }?>
    <?php endwhile; ?>
   </div>
   <!-- #content --> 
   </div>
  <!-- #primary -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>
4
cmsdeployed
// Check if user has previously commented the post.
global $current_user, $post;

if ( ! is_user_logged_in() ) {
    // Show the comment form if the user is not logged in.
    comment_form();
} else { // The user is logged in...

    // Get the comments for the logged in user.
    $usercomment = get_comments( array (
            'user_id' => $current_user->ID,
            'post_id' => $post->ID,
    ) );

    // If the user has commented, output a message.
    if ( $usercomment ) { 
        echo '<p>Vous avez déjà signé cette pétition. S\'il vous plaît partager avec votre famille et vos amis</p>';
    } else { // Otherwise, show the comment form.
        comment_form(); 
    }
}

今すぐコードは、ユーザーが以前サイト全体の代わりにその特定の投稿にコメントしたかどうか確認しています。他の人が役立つことを願っています。

6
cmsdeployed