web-dev-qa-db-ja.com

wordpressのフロントエンドで未承認のコメントを表示する

投稿者が投稿者であるときに投稿者がコメントを管理できるようにするための関数のコーディングはほとんど終わっています(ポートフォリオ)ためにプラグインを見つけることができませんでした。私自身は汚い。

それは基本的にこのように動作します:

1)ユーザーはpost_authorsポートフォリオにコメントを残します。

2)Post_authorは、モデレートのコメントがあることをEメールで通知されます(このビットはプラグイン "notify-on-comments"によって処理されます)。

3)Post_authorがログインして彼/彼女のポートフォリオページに行き、コメントには "削除"と "承認"コメントの2つのリンクがあります。

すでに公開されたコメントを削除することができます。未公開のコメントを公開されたコメントと一緒に表示したいという問題があります。 (コメントを管理するためにwp-adminダッシュボードにアクセスしたい人はいけません。フロントエンドですべて行います)

誰かが私が貢献者にフロントエンドで未承認のコメントを示すことのこの部分をどのようにすることができるかについて知っていますか?

完成したら、私はコードとクレジットを他の誰かがそれを必要とするならば共有することをもっとうれしく思うでしょう。

よろしくお願いします。

2
MartinJJ

簡単です。

function show_portfolio_comments( $post_ID ) 
{
    // NOT approved
    $comments_unapproved = get_comments( array( 'status' => 'hold', 'post_id' => $post_ID ) );
    foreach ( $comments_unapproved as $comments) 
    {
      if ( current_user_can( 'edit_published_posts' ) // maybe you'll have to switch to some other cap 
      {
      ?>
      <div class="comment">
         <h4>Unapproved Comments on your portfolio</h4>
         <div class="comment-author"><?php echo $comment->comment_author; ?></div>
         <div class="comment-content"><?php echo $comment->comment_content; ?></div>
      </div>
      <?php
      } // endif; - current_user_can( 'edit_published_posts' )
    }

    // ALREADY approved
    $comments_approved = get_comments( array( 'status' => 'approve', 'post_id' => $post_ID ) );
    foreach ( $comments_approved as $comments) 
    {
      ?>
      <div class="comment">
      <?php if ( current_user_can( 'edit_published_post' ) { ?>
         <h4>Approved Comments on your portfolio</h4>
      <?php }  // endif; - current_user_can( 'edit_published_posts' ) ?>
         <div class="comment-author"><?php echo $comment->comment_author; ?></div>
         <div class="comment-content"><?php echo $comment->comment_content; ?></div>
      </div>
      <?php
    }
}

テンプレートタグ:

// Use it in your template like this & don't forget to Push the post ID into it:
$post_ID = $GLOBALS['post']->ID;
// or:
global $post;
$post_ID = $post->ID;
// or:
$post_ID = get_the_ID();
// or:
$post_ID = get_queried_object_id();

show_portfolio_comments( $post_ID );
5
kaiser