Qué es la función get_posts de WordPress y cómo utilizarla para crear listas de entradas en PHP

Qué es la función get_posts de WordPress y cómo utilizarla para crear listas de entradas en PHP

La función get_posts de WordPress te permite recuperar entradas, páginas y tipos de entradas personalizados en función de unos parámetros dados. Funciona filtrando las entradas en función de criterios como la fecha, el autor, el tipo, el permiso o la meta clave.

Los propietarios de sitios WordPress pueden utilizar esta función para mostrar rápidamente contenido relevante a los usuarios. Por ejemplo, pueden mostrar listas de entradas con el mayor número de comentarios, el mismo autor o una categoría similar.

En este artículo, explicaremos la función get_posts de WordPress, incluyendo sus parámetros y objetos. También aprenderás a utilizarla para crear consultas personalizadas para diversas tareas.

¿Qué es la función get_posts de WordPress?

La función get_posts de WordPress es una función que te permite consultar las entradas en función de determinados parámetros, como la fecha de publicación, el autor, el tipo, el permiso o la meta clave.

Los desarrolladores de WordPress la utilizan para encontrar rápidamente entradas que coincidan con los criterios dados. Por ejemplo, pueden mostrar listas de entradas con el mayor número de visitas, la misma fecha de publicación o una categoría similar.

¿Cómo funciona get_posts de WordPress?

La función get_posts de WordPress convierte el código PHP en consultas SQL para obtener los datos de las entradas de tu base de datos. Estas consultas se basan en los parámetros proporcionados: los criterios para filtrar las entradas.

Para construir las consultas SQL, esta función de WordPress utiliza la clase WP_query. Tras procesar las consultas, la base de datos devolverá una matriz de resultados WP_post, cada uno de los cuales representa un objeto de entrada individual.

¡Importante! En este caso, las entradas se refieren a entradas, páginas y tipos de entrada personalizados de WordPress

WP_query también puede extraer contenido de entradas de la base de datos de WordPress y mostrarlo en el navegador web. Sin embargo, alterará el loop de WordPress, causando problemas si no lo restableces después de ejecutar una consulta.

Mientras tanto, la función get_posts reinicia automáticamente el loop cada vez que ejecutas una consulta a WordPress. Te permite enviar múltiples consultas de entradas a la base de datos de WordPress sin problemas.

Lectura recomendada

Consulta este otro tutorial sobre WordPress:
Cómo programar entradas en WordPress.

Parámetros de la función get_posts de WordPress

La función get_posts tiene varios parámetros para aplicar filtros personalizados. Algunos de los parámetros más utilizados en el núcleo de WordPress son:

  • Numberposts: establece el número de entradas que recuperará la función. El valor por defecto es cinco.
  • Categoría: determina la categoría de las entradas recuperadas.
  • Incluir: define los ID de las entradas que quieres incluir en los resultados de la consulta.
  • Excluir: especifica los ID de entrada que quieres excluir de los resultados de la consulta.
  • Post_type: filtra el tipo de objeto de entrada que recuperará tu consulta personalizada. Pueden ser entradas, páginas o un tipo de entrada personalizado.
  • Post_status: afecta a si tu consulta devolverá publicaciones en borrador, privadas o publicadas.
  • Orden: ordena las entradas recuperadas en orden ascendente o descendente.
  • Ordenar por: establece los criterios de ordenación, como la fecha de publicación o el número de comentarios. Utiliza rand para recuperar entradas aleatorias.
  • Post_mime_type: consulta los tipos de entradas adjuntas basándose en los parámetros del tipo mime.
  • Suppress_filters: determina si se suprimen los filtros para que la consulta no pueda ser alterada. Este parámetro es por defecto TRUE.

Sin parámetros personalizados, la función get_posts recuperará por defecto las últimas entradas. Debes adjuntar un array de posts objeto a la función y especificar los argumentos para filtrar los posts utilizando esta sintaxis:

$example_array = get_posts($arguments);
   $arguments = array(
      "parameter_1" => value, 
      "parameter_2" => value
   );

Objetos WP_Posts

La función get_posts de WordPress devuelve una matriz de objetos post que contienen diversa información sobre las entradas de tu sitio web. Algunas de las propiedades comunes de los objetos post incluyen:

  • ID: el número de ID del post.
  • post_author: el ID numérico de usuario del autor de la entrada.
  • post_title: el título de la entrada.
  • post_date: la fecha de publicación de la entrada en formato AAAA-MM-DD.
  • post_content: el contenido de la entrada.
  • post _status: el estado actual del post recuperado, como publicado o borrador.
  • post_modified: fecha de la última modificación de la entrada.
  • comment_count: el número de comentarios de la entrada.

Utiliza foreach para recorrer las matrices de entradas y echo para mostrarlas. Aquí tienes un ejemplo de la estructura del código:

foreach($example_array as $post)
   {
      echo "<h1>" . $post->post_title . "</h1><br>";
   }
El botón Gestor de Archivos en el menú de gestión del sitio web hPanel

Para mostrar los resultados en cualquier página, añade la función get_posts a una plantilla de tema hijo. También puedes incluirla en el archivo blog.php para mostrar los resultados en una página del blog. En los planes WordPress de Hostinger, estos archivos son accesibles a través del Administrador de Archivos.

Cómo utilizar la función get_posts en WordPress

Debido a sus diversos parámetros, la función get_posts de WordPress tiene diversos casos de uso. En esta sección, explicaremos los más comunes.

Cómo obtener las entradas más populares

Algunos sitios de WordPress tienen widgets que muestran las entradas más populares. Para activarlo, utiliza get_posts para consultar un array de IDs de entradas en función del número de comentarios:

<?php
   $arguments = array(
      "orderby" => "comment_count", 
      "posts_per_page" => 10
   );
   $posts_array = get_posts($arguments);
   foreach($posts_array as $post)
   {
      echo "<h1>" . $post->post_title . "</h1><br>";
      echo "<p>" . $post->post_ID . "</p><br>";
   } 
?>

En el ejemplo, especificamos argumentos que contienen una matriz de parámetros que filtrarán las entradas consultadas. En este caso, utilizamos el parámetro orderby para ordenar las entradas en función del número de comentarios.

También utilizamos post_per_page para limitar a 10 el número de entradas mostradas por página. A continuación, creamos una matriz que llama a la función get_posts, que utiliza $arguments para filtrar las entradas.

Después de que la función recupere las entradas, el método foreach hace un loop con los resultados. A continuación, la función echo muestra el ID y el título de la entrada recuperada.

Cómo obtener entradas por autor

Si tu sitio web WordPress tiene múltiples colaboradores, encontrar manualmente las entradas de un autor específico puede llevar mucho tiempo. Para hacerlo rápidamente, utiliza el parámetro autor para filtrar las entradas:

<?php
   $arguments = array(
      "numberposts" => -1,
      "author" => 2
   );
   $sample_array = get_posts($arguments);
   foreach($sample_array as $post)
   {
      echo "<h3> " . $post->post_title . "</h3>";
      echo "<p>" . $post->post_date . "</p>";
   }
?>

En los argumentos, utilizamos dos parámetros: número de entradas y autor. El parámetro número de entradas limitará el número de entradas mostradas. Si lo establecemos en -1, se mostrarán todos los mensajes.

Por su parte, el parámetro autor filtrará las entradas y solo mostrará las de un autor concreto basándose en su ID. En este caso, el ID del autor del ejemplo es 2. Para consultar varios autores, especifica los ID en una lista separada por comas.

Cómo obtener entradas de la misma categoría

La función get_posts de WordPress se utiliza habitualmente para recuperar entradas en función de sus categorías. Existen diferentes parámetros para esta tarea, los más comunes son:

  • category: basado en el ID de la categoría.
  • category_name: utilizando el slug de la categoría, como noticias o patrocinado.
  • category__and: consulta una matriz de varios ID de categoría.
  • category_not_in: obtener entradas de un ID de categoría excluido.

Independientemente del parámetro, la sintaxis es la misma. Aquí tienes un ejemplo de fragmento de código para consultar entradas de una categoría con el ID 1:

<?php
   $arguments = array(
      "numberposts" => -1,
      "category" => 1,
      "orderby" => "date",
      "order" => "DESC"
   );
   $category_array = get_posts($arguments);
   foreach($sample_array as $post)
   {
      echo "<h3> " . $post->post_title . "</h3>";
      echo "<p>" . $post->post_ID . "</p>";
   }
?>

En el ejemplo, establecemos el número de entradas en –1 para mostrarlas todas y especificamos el ID de categoría como filtro. También utilizamos los parámetros orderby y order para ordenar las entradas consultadas en orden descendente según su fecha.

La función get_posts devolverá las entradas en $category_array basándose en los parámetros $arguments. A continuación, el código hace un bucle con los resultados para mostrar el ID y el título de la entrada consultada.

Si quieres recuperar entradas con varias categorías, sustituye el parámetro category por category__and. A continuación, utiliza una lista separada por comas de los ID de categoría como valor. Por ejemplo, aquí tienes un código que mostrará las entradas con 1, 2 y 3 categorías:

"category__and" => array("1","2","3")

Los parámetros categoría y nombre_categoría también pueden tomar una matriz como valor. A diferencia de category__and, recuperarán entradas de cualquiera de las categorías especificadas. Considera el siguiente ejemplo:

"category_name" => array("news","archive","sponsored")

El código del ejemplo mostrará todas las entradas que pertenezcan a una o más de las categorías especificadas. Si utilizas category__and, la función solo mostrará las entradas de las tres categorías.

Cómo obtener entradas con meta claves y valores coincidentes

Si tus entradas de WordPress tienen un campo personalizado, puedes utilizar get_posts para recuperarlas basándote en una meta clave y un valor coincidentes. Aquí tienes los parámetros importantes y sus funciones:

  • meta_key: recupera entradas basándose en la clave del campo personalizado.
  • meta_value: consulta las entradas basándose en el valor de la cadena de la meta clave.
  • meta_value_num: filtra las entradas de forma similar a meta_value pero utiliza un valor numérico.
  • meta_compare: aplicar una operación para comprobar el parámetro meta_valor.

Los usuarios pueden utilizar estos parámetros juntos para recuperar entradas con una clave y un valor meta específicos. Considera el siguiente ejemplo:

<?php
   $arguments = array(
      "numberposts" => -1,
      "meta_key" => "color",
      "meta_value" => "blue", 
      "orderby" => "date",
      "order" => "ASC"
   );
   $category_array = get_posts($arguments);
   foreach($sample_array as $post)
   {
      echo "<h3> " . $post->post_title . "</h3>";
      echo "<p>" . $post->post_date . "</p>";
   }
?>

El código requiere todas las entradas que tienen el campo personalizado color con un valor azul. Si omites el parámetro meta_key, recuperará todas las entradas con un valor azul, independientemente de su nombre de campo personalizado. A la inversa, si eliminas meta_valor se mostrarán las entradas con el campo personalizado color con cualquier valor.

Por su parte, meta_compare te permite especificar una operación para modificar el funcionamiento de meta_clave y meta_valor. Considera el siguiente fragmento de código:

<?php
   $arguments = array(
      "numberposts" => -1,
      "meta_key" => "color",
      "meta_value" => "blue", 
      "meta_compare" => "!=", 
   );
?>

Utilizamos el valor != para excluir las entradas con el valor de meta_clave especificado. Así, se mostrará una matriz de entradas excluyendo las que tengan el metavalor azul. Te recomendamos que consultes la documentación de WordPress para conocer todos los valores de funcionamiento.

También puedes utilizar varios pares meta clave-valor para crear una consulta más específica. Para ello, utiliza el parámetro meta_consulta con las matrices de filtro como valor. A continuación, utiliza la función relación con el valor AND u OR para establecer relaciones entre las matrices. Esta es la sintaxis

<?php
   $arguments = array(
      "post_type" => "postname",
      "meta_query" => array(
      "relation" => "relation",
      array(
         "key" => "keyname",
         "value" => "keyvalue", 
         "compare" => "operation", 
      ),
      array(
         "key" => "keyname",
         "value" => "keyvalue", 
         "compare" => "operation", 
      ),
      ),
   );
?>

   

Cómo obtener un tipo de entrada personalizado con una taxonomía personalizada

La taxonomía de WordPress es un mecanismo que te permite agrupar contenidos en función de sus relaciones o características. Las taxonomías predeterminadas para las entradas de WordPress son categoría y etiqueta, pero puedes añadir tantas nuevas como necesites.

Si tu sitio WordPress tiene un tipo de entrada personalizado, la taxonomía ayuda a categorizar su contenido de forma más específica. Por ejemplo, un tipo de entrada de película puede tener taxonomías personalizadas como género y fecha de estreno.

La consulta de entradas de la misma taxonomía utiliza una función similar a la de categoría. Utiliza el nombre de la taxonomía personalizada como parámetro y especifica el nombre del término o identificador como valor. Por ejemplo, el siguiente fragmento de código consultará un tipo de entrada personalizado llamado «película» para buscar entradas con el género «reseña«:

<?php
   $arguments = array(
      "numberposts" => -1,
      "post_type" => "movie",
      "genre" => "review",
      "orderby" => "date",
      "order" => "ASC"
   );
   $category_array = get_posts($arguments);
   foreach($sample_array as $post)
   {
      echo "<h3> " . $post->post_title . "</h3>";
      echo "<p>" . $post->post_date . "</p>";
   }
?>

También puedes utilizar más de un parámetro para crear una consulta de post compleja utilizando tax_query. Toma un array de arrays como valor, conteniendo cada uno de ellos los siguientes parámetros:

  • taxonomía: el nombre de la taxonomía.
  • field: el método para seleccionar el término de la taxonomía, ya sea utilizando un ID, un slug o un nombre. Por defecto utiliza el ID.
  • terms: el término de la taxonomía basado en el campo. Para filtrar varias taxonomías, utiliza una matriz como valor.
  • include_children: la regla que define si se debe incluir la taxonomía hija. Por defecto se establece en TRUE.
  • operador: la operación lógica para los parámetros. Los valores incluyen IN, NOT IN, AND, EXISTS y NOT EXISTS.

Por ejemplo, el siguiente código consultará las entradas con la etiqueta John de la taxonomía Personas:

<?php
   $arguments = array(
   "numberposts" => -1,
   "tax_query" => array(
      array(
      "taxonomy" => "people",
      "field" => "slug",
      "terms" => "john",
      ),
   ),
   "orderby" => "date",
   "order" => "ASC"
   );
?>

Para utilizar varias consultas de taxonomía, añade otra matriz en el parámetro tax_query. Además, especifica la relación entre las matrices utilizando los parámetros de relación con valores AND u OR. Aquí tienes un ejemplo de matriz:

<?php
   $arguments = array(
   "tax_query" => array(
   "relation" => "AND",
   array(
      "taxonomy" => "movie_genre",
      "field" => "slug",
      "terms" => array( "thriller", "fantasy" ),
   ),
   array(
      "taxonomy" => "actor",
      "field" => "term_id",
      "terms" => array( 90, 105, 207 ),
      "operator" => "NOT IN",
   ),
   ),
?>

Conclusión

La función get_posts de WordPress es un método para recuperar un conjunto de entradas, páginas o tipos de entradas personalizados de la base de datos basándose en parámetros de consulta específicos. Se utiliza para mostrar rápidamente las entradas que coinciden con tus criterios, como el recuento de comentarios o las meta claves.

Esta función utiliza la clase WP_query para construir una consulta SQL y enviarla a la base de datos de WordPress. La base de datos devuelve entonces una matriz de objetos post que representan las entradas del sitio web.

Hay varios parámetros de get_posts, como numberposts, category y post_type. También devuelve objetos WP_posts que contienen datos de la entrada como ID, post_author y post_title.

Los desarrolladores utilizan la función get_posts de WordPress para diversas tareas y escenarios. Normalmente, puedes utilizarla para recuperar entradas con el mayor número de comentarios, el mismo autor, categorías similares y taxonomías personalizadas.

Preguntas frecuentes sobre get_posts de WordPress

Para ayudarte a comprender mejor la función get_posts de WordPress, responderemos a varias preguntas frecuentes sobre ella.

¿Cuál es la diferencia entre get_posts y WP_query?

Ambos son métodos para consultar y mostrar entradas de la base de datos de tu sitio web. Sin embargo, la clase WP_query altera el loop de WordPress después de cada consulta, lo que puede provocar errores si se utiliza incorrectamente.

Mientras tanto, el método get_posts reinicia automáticamente el bucle después de mostrar las entradas solicitadas, por lo que es menos propenso a errores y más conveniente.

¿Cuál es la diferencia entre las funciones get_posts y get_pages?

A diferencia de get_posts, la función get_pages no utiliza la clase WP_query y consulta directamente la base de datos. Estas funciones de WordPress también tienen parámetros e información recuperada diferentes.Por ejemplo, get_pages no utiliza los parámetros meta value y key. Además, solo consulta páginas y tipos de entrada jerárquicos.

Author
El autor

Stefany Franco

Stefany es una profesional de marketing, amante de la buena gramática. Disfruta escribir sobre tecnologías y SEO. En su tiempo libre, le gusta ver películas y hacer galletas.