Ya casi estamos llegando al final de nuestra serie, "Masterización WP_Query
", y es hora de presentar a los hermanos de la WP_Query
clase. En la parte anterior, repasamos WP_User_Query
, y en este artículo, vamos a aprender sobre el WP_Comment_Query
clase.
Vamos a empezar!
Introducido en WordPress versión 3.1, el WP_Comment_Query
La clase hace casi todo el trabajo pesado en la consulta de comentarios en WordPress. Permite la consulta de dos tablas de bases de datos., wp_comments
y wp_commentmeta
, en esencia.
Aquí esta la esqueleto de un bucle de consulta de comentarios utilizando la WP_Comment_Query
clase:
consulta ($ args); if ($ comments) foreach ($ comments as $ comment) // Haz lo que haces para cada comentario aquí. else else // Mostrar mensaje porque no hay comentarios. ?>
Bastante fácil, ¿verdad? Podremos hacer un ejemplo unos pocos pasos después, pero veamos primero debajo del capó..
Como no hay muchas propiedades (variables públicas de la clase) y métodos (funciones públicas de la clase), las repasaré rápidamente en dos mini secciones. Aquí vamos!
diferente a WP_Query
que tiene más de 30 propiedades (25 de las cuales son equivalentes para las Etiquetas Condicionales), el WP_Comment_Query
La clase tiene solo cinco propiedades:
$ solicitud
: Una cadena que contiene la consulta SQL.$ meta_query
: Una matriz para hacer una "meta consulta" con la ayuda de WP_Meta_Query
clase.$ date_query
: Una matriz para realizar una "consulta de fecha" con la ayuda de WP_Date_Query
clase.$ query_vars
: Una matriz de las variables de la consulta..$ comentarios
: Una matriz de comentarios obtenidos con la consulta.Sí, solo hay un método para usar con el WP_Comment_Query
clase, y el nombre de ese método es consulta()
.
los consulta()
el método básicamente ejecuta la consulta, utilizando los parámetros que veremos en la siguiente sección; pero veamos qué obtenemos en una matriz cuando usamos este método:
comentario_ID
: El ID del comentario.comment_post_ID
: El ID de la publicación a la que se hace el comentario..comentar_autor
: El comentario del autor del nombre.comment_author_email
: La dirección de correo electrónico del autor del comentario..comment_author_url
: La URL del sitio web del autor del comentario.comment_author_IP
: La dirección IP del comentario.comentario_fecha
: La fecha de comentario.comment_date_gmt
: El comentario en formato horario GMT..comentario_contenido
: El contenido del comentario..comment_karma
: Un campo de base de datos no utilizado para cada comentario-plugins puede usar esto para almacenar, bueno, el karma del comentario.comentario_aprobado
: El estado de aprobación del comentario..comentario_agente
: El usuario agente del comentario..tipo_comentarios
: El tipo de comentario si es un pingback
o un rastrear
.comentario_parente
: Para comentarios anidados, este es el ID del comentario principal. Si es el comentario de nivel superior, esto será 0
.user_id
: 0
Si el autor del comentario no está registrado en el sitio web, el ID del usuario de lo contrario.Veamos los parámetros de la WP_Comment_Query
clase ahora.
Hay 34 parámetros que podemos usar con WP_Comment_Query
, pero no dejes que te asusten: ya puedes reconocerlos por sus nombres, y los otros son igualmente fáciles de explicar y usar.
author_email
(cadena): Dirección de correo electrónico del autor del comentario.autor__in
(matriz): ID de autor para incluir en la consulta.author__not_in
(matriz): ID de autor para excluir de la consulta.post_author__in
(array): igual que autor__in
.post_author__not_in
(array): igual que author__not_in
.include_unapproved
(matriz): una matriz de ID de usuario o direcciones de correo electrónico cuyos comentarios deben devolverse independientemente de su estado de aprobación.campos
(cadena): campos de comentarios para devolver. Acepta 'ids'
solo, se utiliza para devolver solo las ID de comentario.comentar
(matriz): ID de comentario para incluir en la consulta.comment__not_in
(matriz): ID de comentario para excluir de la consulta.karma
(entero): la puntuación de "karma" para devolver los comentarios coincidentes para. (Recuerda comment_karma
de la sección anterior?)número
(entero): el número máximo de comentarios a devolver.compensar
(entero): el número de comentarios a pasar en la consulta.orden por
(cadena o matriz): un estado de comentario o una matriz de estados para ordenar los resultados de la consulta. Acepta todas las claves devueltas desde el consulta()
método, más 'meta_valor'
, 'meta_value_num'
, valor de $ meta_key
, FALSO
, matriz vacía o 'ninguna'
. (Los tres últimos desactivan el ORDEN POR
cláusula en la consulta.)orden
(cadena): Cómo ordenar los comentarios recuperados-'ASC'
para ascender o 'DESC'
para descender. (Defecto: 'DESC'
)padre
(entero): ID de comentario del padre para recuperar hijos.ID del mensaje
(entero): ID de publicación para recuperar comentarios. (Defecto: 0
)publicar
(matriz): ID de publicación para incluir en los resultados.post__not_in
(matriz): ID de publicación para excluir de los resultados.post_autor
(entero): Publicar ID de autor para limitar los resultados por.Nombre del puesto
(cadena): Post slug para obtener comentarios de.post_parente
(entero): ID de la publicación principal para obtener comentarios de.tipo de mensaje
(cadena): Tipo de publicación para obtener comentarios de.post_status
(cadena): Estado de publicación para obtener comentarios de.estado
(cadena): estado del comentario para limitar los resultados por. Acepta 'sostener'
, 'aprobar'
, 'todos'
o un estado de comentario personalizado. (Defecto: 'todos'
)tipo
(cadena o matriz): un tipo de comentario o una matriz de tipos de comentarios para filtrar la consulta. Acepta 'comentario'
, 'pings'
(es decir, pingbacks y trackbacks combinados), o tipos de comentarios personalizados.escribir
(matriz): tipos de comentarios para incluir en la consulta.tipo__not_in
(matriz): tipos de comentarios para excluir de la consulta.user_id
(entero): ID de usuario para incluir comentarios de un usuario específico.buscar
(cadena): Buscar términos para obtener comentarios coincidentes para.contar
(booleano): devuelve el recuento de comentarios (CIERTO
) o una serie de comentarios (FALSO
). (Defecto: FALSO
)meta_key
(cadena): una clave meta personalizada para incluir solo los comentarios coincidentes.meta_valor
(cadena): un valor meta personalizado para incluir solo comentarios coincidentes.meta_query
(matriz): una matriz de WP_Meta_Query
cláusulas (que veremos en la siguiente parte de esta serie).date_query
(matriz): una matriz de WP_Date_Query
Cláusulas (que veremos en la siguiente parte de esta serie). (Defecto: NULO
)Nota: Los valores predeterminados de todos los parámetros están vacíos, a menos que se indique lo contrario arriba.
No se sentiría como un completar tutorial si no vimos cómo funciona, ¿verdad? Pensemos en un escenario simple y hagamos un ejemplo rápido, entonces.
Supongamos que va a enumerar los comentarios realizados por el autor de la publicación y ordenarlos por ID de comentarios (en lugar de fechas de comentarios). Esto es lo que haces:
post-> post_author; // Instalar argumentos. $ args = array ('user_id' => $ post_author_id, 'orderby' => 'comment_ID'); // Consulta de comentarios personalizados. $ my_comment_query = new WP_Comment_Query; $ comments = $ my_comment_query-> query ($ args); // Compruebe si hay comentarios. if ($ comments) // Comenzar a listar comentarios. eco '
'. __ ('El autor de la publicación no ha publicado ningún comentario.', 'Tutsplus'). '
'; ?>Consejo rapido: Si desea crear consultas de comentarios pero desea usar una GUI en lugar de escribir código, puede usar GenerateWP's WP_Comment_Query
Generador.
Como dije, estamos llegando al final de esta serie. En la siguiente parte, vamos a aprender sobre el WP_Meta_Query
y WP_Date_Query
clases juntas.
¿Tienes algo que añadir a este artículo? Comparte tus pensamientos con nosotros en la sección de Comentarios a continuación. Y si te gustó el artículo, no olvides compartirlo con tus amigos..
Si está interesado en algunos scripts y complementos que le pueden dar una funcionalidad más avanzada con su sistema de comentarios, hay una colección útil de artículos en Envato Market..