martinjj
  • 0
Гуру

Показать неподтвержденные комментарии в интерфейсе WordPress

  • 0

Я почти закончил кодировать функцию, которая позволяет участникам, когда они являются авторами сообщений, управлять комментариями, оставленными в их собственном сообщении (портфолио), не мог найти плагин для этого, поэтому мне пришлось испачкаться.

В основном это будет работать так:

1) Пользователь оставляет комментарий к портфолио post_authors.

2) Post_author уведомляется по электронной почте о том, что у него есть комментарий для модерации (этот бит обрабатывается плагином «уведомлять о комментариях»).

3) Post_author входит в систему и переходит на страницу своего портфолио, а в комментариях есть две ссылки: одна для «удалить» и одна для «одобрить» комментарий.

Теперь я могу заставить удаление работать с уже опубликованными комментариями, моя проблема в том, что я хочу показать неопубликованный комментарий вместе с опубликованными комментариями (не хочу, чтобы люди, имеющие доступ к панели управления wp-admin, модерировали комментарии, я хочу, чтобы все это было сделано на переднем конце),

Кто-нибудь знает, как я могу сделать эту часть отображения неутвержденного комментария во внешнем интерфейсе для участников?

После завершения я буду более чем счастлив поделиться кодом и кредитами, если это кому-то еще понадобится.

С уважением и благодарностью заранее

Share
  1. Просто добавьте возможность edit_published_posts к роли пользователя.

    • 0
    • Привет @Kaiser, спасибо, что уделили время этому коду, из того, что вы сделали, я вижу, что он делает то, что мне нужно. Единственная проблема заключается в том, что я не могу заставить код работать без ошибок, я использовал часть кода, и он работал отлично, но когда я использую код целиком или только неутвержденную часть, у меня возникает проблема с фигурными брекеты, я пробовал все, чтобы заставить его работать, но он не будет иметь его. Вы сделали хорошее замечание о «возможностях», в моем случае это должно быть edit_published_posts.

      • 0
    • @Martin: Рад, что это сработало… пока, но вы могли бы быть немного более конкретным: какое сообщение об ошибке и что насчет фигурных скобок? что вы пробовали и как? Просто обновите свой ответ, чтобы я мог взглянуть.

      • 0
    • теперь все хорошо, проблема заключалась в том, что в двух операторах if отсутствовала закрывающая скобка, которую я всю жизнь пропустил. На данный момент все работает на 99%, у меня проблема в том, что все неутвержденные комментарии отображаются во всех сообщениях, а не в сообщении, которому они назначены, поэтому, подытоживая, мне нужно найти способ исправить это с помощью post_id, большое спасибо для вашей помощи.

      • 0
    • @Martin: см. обновленный ответ. Там, где нет пропущенных закрывающих фигурных скобок (отметил их комментарием). Я также обновил возможности и файл $post->ID . Это должно работать так, как вы ожидаете. Я также обернул его в функцию, которую вы можете использовать в качестве тега шаблона. Просто поместите функцию в свой functions.php файл.

      • 0
  2. Легкий:

    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 );
    
    • 0

Оставить ответ

You must login to add an answer.