Mostrar comentarios de ID de múltiples publicaciones en la plantilla de comentarios

4

Esto puede sonar como una solicitud inusual, pero intento mostrar los comentarios de varias publicaciones relacionadas en una sola plantilla de comentarios.

Por ejemplo, tengo varias publicaciones sobre el mismo tema ( IDs 253, 724, 798 ) y quiero que todos los comentarios de estas publicaciones aparezcan a continuación en un hilo continuo. Entonces, si estoy viendo la publicación ID 724 , también puedo ver los comentarios de las publicaciones 253 y 798 .

¿Puedo pasar la publicación múltiple ID s a la plantilla de comentarios para lograr esto? ¿Esto requiere una consulta personalizada antes o después de la plantilla de comentarios para mostrar todos los comentarios en un hilo combinado?

    
pregunta sr83 26.07.2012 - 00:21

2 respuestas

2

puedes obtener comentarios de cada publicación por su id con

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

luego fusione (array-merge) y ordene la matriz por fecha (comment- > comment_date es la clave del valor de fecha) si lo desea. entonces solo

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

Todo esto es muy manual, y es posible que desee automatizar el proceso, pero probablemente sea un asunto diferente.

    
respondido por el pcarvalho 26.07.2012 - 04:44
2

Obtener los comentarios para varias publicaciones es bastante simple: simplemente reemplace comment_post_ID = YOUR_POST_ID con IN() función.

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 );
}

Ahora, llama a esta función justo antes de llamar a comments_template() :

add_filter( 'query', 'wpse_59687_multiple_comment_post_id_query_filter' );

Lo que es más difícil:

  • get_comments_number() está mal. Tienes que filtrar su valor también.
  • Las respuestas a un comentario de otra publicación se redirigen a la URL de la otra publicación, no a la página donde el comentarista ha escrito el comentario. Arreglar eso no será tan trivial ...
respondido por el fuxia 26.07.2012 - 05:33

Lea otras preguntas en las etiquetas