Mostrar comentários de vários códigos de postagem no modelo de comentário

4

Isso pode soar como uma solicitação incomum, mas estou tentando exibir comentários de várias postagens relacionadas em um único modelo de comentário.

Por exemplo, tenho várias postagens sobre o mesmo tópico ( IDs 253, 724, 798 ) e quero que todos os comentários dessas postagens apareçam em um tópico contínuo. Então, se eu estou vendo post ID 724 eu também posso ver os comentários de posts 253 e 798 .

Posso passar várias postagens ID s para o modelo de comentários para conseguir isso? Isso exige uma consulta personalizada antes ou depois do modelo de comentários para mostrar todos os comentários em um segmento mesclado?

    
por sr83 26.07.2012 / 00:21

2 respostas

2

você pode obter comentários de cada postagem por seu ID com

$comments253 = get_comments('post_id=253');
$comments724 = get_comments('post_id=724');
$comments798 = get_comments('post_id=798');

, em seguida, mesclar (mesclagem de matriz) e classificar a matriz por data (comentário- > comment_date sendo a chave para o valor de data) se você quiser. então apenas

 foreach($comments as $comment) :
      echo($comment->comment_author . '<br />' . $comment->comment_content);
 endforeach;

Isso tudo é muito manual, e você pode querer automatizar o processo, mas isso é provavelmente um assunto diferente.

    
por pcarvalho 26.07.2012 / 04:44
2

Obter comentários para várias postagens é bastante simples: basta substituir comment_post_ID = YOUR_POST_ID por IN() .

function wpse_59687_multiple_comment_post_id_query_filter( $query )
{
    $post_ids = array ( 149, 188, 151 );
    if ( FALSE === strpos( $query, 'comment_post_ID = ' ) )
    {
        return $query; // not the query we want to filter
    }

    remove_filter( 'query', 'wpse_59687_multiple_comment_post_id_query_filter' );

    $replacement = 'comment_post_ID IN(' . implode( ',', $post_ids ) . ')';
    return preg_replace( '~comment_post_ID = \d+~', $replacement, $query );
}

Agora você chama essa função antes de chamar comments_template() :

add_filter( 'query', 'wpse_59687_multiple_comment_post_id_query_filter' );

O que é mais difícil:

  • get_comments_number() está errado. Você tem que filtrar seu valor também.
  • As respostas a um comentário de outra postagem são redirecionadas para o URL da outra postagem, não para a página em que o comentador escreveu o comentário. Consertar isso não será tão trivial…
por fuxia 26.07.2012 / 05:33

Tags