{"id":28113,"date":"2019-10-18T08:04:17","date_gmt":"2019-10-18T15:04:17","guid":{"rendered":"https:\/\/kinsta.com\/?p=54548"},"modified":"2023-08-23T17:29:10","modified_gmt":"2023-08-23T15:29:10","slug":"wordpress-get_posts","status":"publish","type":"post","link":"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/","title":{"rendered":"WordPress get_posts: \u00bfC\u00f3mo Utilizar Esta \u00datil Funci\u00f3n PHP para Construir Listas de Mensajes?"},"content":{"rendered":"<p>WordPress <code>get_posts<\/code> es una poderosa funci\u00f3n que permite a <a href=\"https:\/\/kinsta.com\/es\/blog\/contratar-desarrollador-de-wordpress\/\">los desarrolladores<\/a> recuperar piezas de contenido de la <a href=\"https:\/\/kinsta.com\/es\/blog\/base-de-datos-wordpress\/\">base de datos de WordPress<\/a>. Puede especificar hasta el \u00faltimo detalle qu\u00e9 mensajes, p\u00e1ginas y <a href=\"https:\/\/kinsta.com\/es\/blog\/wordpress-tipos-de-postes-personalizados\/\">tipos de mensajes personalizados<\/a> est\u00e1 buscando, obtener su conjunto de resultados personalizado y, a continuaci\u00f3n, filtrar y ordenar los elementos como un ninja PHP\/MySQL.<\/p>\n<p>Pero no se asuste si no es un profesional de PHP, existen innumerables <a href=\"https:\/\/kinsta.com\/es\/blog\/php-tutoriales\/\" target=\"_blank\" rel=\"noopener noreferrer\">tutoriales de PHP que puedes ver o leer<\/a> y aprender el lenguaje. S\u00f3lo necesita un poco de <a href=\"https:\/\/kinsta.com\/es\/blog\/acaso-ha-muerto-php\/\">conocimiento de PHP<\/a> para crear listas personalizadas de mensajes para mostrar en su sitio web, ya que la funci\u00f3n <code>get_posts<\/code> mantiene una serie de par\u00e1metros que permiten crear consultas simples o avanzadas.<\/p>\n<p>El uso de <code>get_posts<\/code> de WordPress es un proceso de dos pasos:<\/p>\n<ul>\n<li>Primero, tiene que crear su consulta personalizada. En realidad, no parecer\u00e1 una consulta MySQL, y no escribir\u00e1 ninguna instrucci\u00f3n <code>SELECT<\/code>. S\u00f3lo necesita definir una matriz de par\u00e1metros y pasarla a la funci\u00f3n <code>get_posts<\/code>. WordPress convierte esa matriz en una consulta MySQL real y <strong>segura<\/strong>, la ejecuta contra la base de datos y devuelve una matriz de mensajes.<\/li>\n<li>Segundo, tiene que recorrer el conjunto de resultados devuelto por <code>get_posts<\/code> con un ciclo de foreach.<\/li>\n<\/ul>\n<p>Dicho esto, en este post, primero nos adentraremos en los conceptos clave mencionados anteriormente, espec\u00edficamente c\u00f3mo funciona <code>get_posts<\/code>, c\u00f3mo construir una consulta personalizada, y c\u00f3mo mostrar los datos en el sitio principal.<br \/>\nLuego, le proporcionar\u00e9 un ejemplo del mundo real con un fragmento de c\u00f3digo que puede obtener, editar y usar en su entorno de preparaci\u00f3n para sus pruebas y desarrollo.<\/p>\n<p>Nota: Normalmente diferenciamos entre mensajes, p\u00e1ginas y tipos de mensajes personalizados. En este art\u00edculo, <strong>utilizamos el t\u00e9rmino <em>`posts&#8217;<\/em> para los blogs regulares, as\u00ed como para las p\u00e1ginas y los tipos de post personalizados<\/strong>. Todos estos tipos de mensajes se almacenan en la tabla &#8216;<em>wp_posts&#8217;<\/em> de la base de datos. La principal diferencia entre los tipos de puestos est\u00e1 en el valor del campo &#8216;<em>post_type&#8217;<\/em>. <strong>Desde la perspectiva de un desarrollador, los mensajes, las p\u00e1ginas y los tipos de mensajes personalizados son todos mensajes<\/strong>.<\/p>\n<ul>\n<li><a href=\"#get-posts\">Introducci\u00f3n a la Funci\u00f3n get_posts de WordPress<\/a><\/li>\n<li><a href=\"#parameters\">\u00bfC\u00f3mo Crear Consultas con los Par\u00e1metros get_posts?<\/a><\/li>\n<li><a href=\"#display\">\u00bfC\u00f3mo Mostrar los Datos de get_posts?<\/a><\/li>\n<li><a href=\"#example\">Ejemplo del Mundo Real: Mostrar una Lista Altamente Personalizada de Mensajes con un C\u00f3digo Abreviado Personalizado<\/a><\/li>\n<\/ul>\n<h2 id=\"get-posts\">Introducci\u00f3n a la Funci\u00f3n get_posts de WordPress<\/h2>\n<p>El Codex describe <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_posts\/\">la funci\u00f3n <code>get_posts<\/code> de la<\/a> siguiente manera:<\/p>\n<blockquote><p>Recupera una matriz de los \u00faltimos mensajes, o mensajes que corresponden a los criterios dados.<\/p><\/blockquote>\n<p>Podemos usar <code>get_posts<\/code> de esta manera:<\/p>\n<pre><code class=\"language-php\">$args = array(\n\t'numberposts'\t=&gt; 20,\n\t'category'\t\t=&gt; 4\n);\n$my_posts = get_posts( $args );\n\nif( ! empty( $my_posts ) ){\n\t$output = '&lt;ul&gt;';\n\tforeach ( $my_posts as $p ){\n\t\t$output .= '&lt;li&gt;&lt;a href=\"' . get_permalink( $p-&gt;ID ) . '\"&gt;' \n\t\t. $p-&gt;post_title . '&lt;\/a&gt;&lt;\/li&gt;';\n\t}\n\t$output .= '&lt;ul&gt;';\n}<\/code><\/pre>\n<p>La funci\u00f3n anterior recupera las \u00faltimas 20 entradas de blog en la categor\u00eda especificada (por defecto el <code>'post_type'<\/code> es <code>'post'<\/code>) y devuelve una matriz de objetos <code>$post<\/code>. Puede iterar sobre la matriz para mostrar los mensajes en la pantalla. Es bastante f\u00e1cil, \u00bfverdad?<\/p>\n<p><code>get_posts<\/code> <a href=\"https:\/\/kinsta.com\/es\/blog\/wp-query\/\">usa WP_Query<\/a> para recuperar los elementos del mensaje, y mantiene una matriz de los mismos par\u00e1metros disponibles en WP_Query (con pocas excepciones). As\u00ed que tenemos una lista enorme de variables que podemos usar para construir nuestras consultas personalizadas. Estos par\u00e1metros se agrupan en las siguientes <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_query\/#parameters\">15 categor\u00edas<\/a>:<\/p>\n<ul>\n<li>Par\u00e1metros de autor<\/li>\n<li>Categor\u00eda Par\u00e1metros<\/li>\n<li>Par\u00e1metros de la etiqueta<\/li>\n<li>Par\u00e1metros de Taxonom\u00eda<\/li>\n<li>Par\u00e1metros de b\u00fasqueda<\/li>\n<li>Par\u00e1metros de publicaci\u00f3n y p\u00e1gina<\/li>\n<li>Par\u00e1metros de la contrase\u00f1a<\/li>\n<li>Par\u00e1metros del tipo de puesto<\/li>\n<li>Orden y par\u00e1metros Orderby<\/li>\n<li>Par\u00e1metros de fecha<\/li>\n<li>Par\u00e1metros de campo personalizado (post meta)<\/li>\n<li>Par\u00e1metros de permiso<\/li>\n<li>Par\u00e1metros del tipo de m\u00edmica<\/li>\n<li>Par\u00e1metros de almacenamiento en cach\u00e9<\/li>\n<li>Par\u00e1metro de campos de retorno<\/li>\n<\/ul>\n<p>Un r\u00e1pido vistazo a la lista anterior le puede dar una idea de la variedad de consultas personalizadas que puede crear y ejecutar contra la base de datos de WordPress. Por lo tanto, vamos a profundizar en los par\u00e1metros de consulta y empezar a construir nuestras listas de mensajes.<\/p>\n<h2 id=\"parameters\">\u00bfC\u00f3mo Crear Consultas con WordPress get_posts?<\/h2>\n<p>Cada categor\u00eda de par\u00e1metros se refiere a la misma informaci\u00f3n. Por ejemplo, podemos construir una consulta para recuperar mensajes de los autores especificados o excluir a los autores especificados, definiendo el autor por ID o nombre de usuario. De la misma manera, podemos construir consultas que obtengan entradas por categor\u00eda, etiqueta, taxonom\u00eda, fecha, campos personalizados e incluso m\u00e1s.<\/p>\n<h3>\u00bfC\u00f3mo Utilizar los Par\u00e1metros para Crear Consultas Simples?<\/h3>\n<p>Muchos par\u00e1metros se pueden utilizar de forma muy similar, independientemente de la categor\u00eda a la que pertenezcan. Por ejemplo, los siguientes par\u00e1metros permiten consultar la base de datos por autor(es) del mensaje:<\/p>\n<ul>\n<li><code>author<\/code> (<em>int<\/em>) \u2013 ID del autor<\/li>\n<li><code>author_name<\/code> (<em>string<\/em>) \u2013\u00a0<code>user_nicename<\/code>\u00a0del autor<\/li>\n<li><code>author__in<\/code> (<em>array<\/em>) \u2013 una serie de IDs de m\u00faltiples autores<\/li>\n<li><code>author__not_in<\/code> (<em>array<\/em>) \u2013 una matriz de m\u00faltiples IDs de autores que se excluir\u00e1n del conjunto de resultados<\/li>\n<\/ul>\n<p>\u00bfC\u00f3mo podemos utilizar estos par\u00e1metros?<\/p>\n<p>En el siguiente ejemplo, el par\u00e1metro <code>'author'<\/code> especifica que queremos que las entradas de blog m\u00e1s recientes sean escritas por el autor con ID = 1:<\/p>\n<pre><code class=\"language-php\">$my_posts = get_posts( array( 'author' =&gt; 1 ) );<\/code><\/pre>\n<p>El mismo par\u00e1metro &#8216;<em>author&#8217;<\/em> permite consultar la base de datos de diferentes maneras:<\/p>\n<pre><code class=\"language-php\">\/\/ return an array of posts from specific authors\n$my_posts = get_posts( array( 'author' =&gt; '1,5,12' ) );<\/code><\/pre>\n<pre><code class=\"language-php\">\/\/ return an array of posts excluding the specified author\n$my_posts = get_posts( array( 'author' =&gt; -1 ) );<\/code><\/pre>\n<p>As\u00ed, dependiendo del valor del par\u00e1metro, tendr\u00e1 un conjunto de resultados con mensajes de un solo autor (entero), de varios autores (una lista de valores separados por comas) o excluyendo a un autor (valores negativos).<\/p>\n<p>Otros par\u00e1metros proporcionan flexibilidad adicional. Por ejemplo, la siguiente llamada a <code>get_posts<\/code> devuelve una matriz de las \u00faltimas entradas de m\u00faltiples autores:<\/p>\n<pre><code class=\"language-php\">\/\/ return an array of posts from multiple authors\n$my_posts = get_posts( array( 'author__in' =&gt; array( 1, 5, 12 ) ) );<\/code><\/pre>\n<p>Y tambi\u00e9n podemos excluir a m\u00faltiples autores:<\/p>\n<pre><code class=\"language-php\">\/\/ return an array of posts from multiple authors\n$my_posts = get_posts( array( 'author__not_in' =&gt; array( 1, 5, 12 ) ) );<\/code><\/pre>\n<p>Del mismo modo, podemos usar par\u00e1metros de categor\u00eda, par\u00e1metros de etiquetas, par\u00e1metros de tipo post, con algunas diferencias espec\u00edficas. V\u00e9ase, a modo de ejemplo, los par\u00e1metros de categor\u00eda:<\/p>\n<ul>\n<li><code>cat<\/code> (<em>int<\/em>)<\/li>\n<li><code>category_name<\/code> (<em>string<\/em>)<\/li>\n<li><code>category__and<\/code> (<em>array<\/em>)<\/li>\n<li><code>category__in<\/code> (<em>array<\/em>)<\/li>\n<li><code>category__not_in<\/code> (<em>array<\/em>)<\/li>\n<\/ul>\n<p>De todos modos, no todos los par\u00e1metros son tan f\u00e1ciles de usar como estos par\u00e1metros. Adem\u00e1s, podemos utilizar par\u00e1metros de categor\u00eda, par\u00e1metros de tipo post, par\u00e1metros de tipo mime, etc. todo en una sola consulta. Esto significa que tenemos un control granular sobre los elementos del conjunto de resultados, y podemos crear consultas m\u00e1s avanzadas basadas en tipos de mensajes, taxonom\u00edas personalizadas y campos personalizados en conjunto.<\/p>\n<p>As\u00ed que, profundicemos m\u00e1s.<\/p>\n<h3>\u00bfC\u00f3mo Crear Consultas Avanzadas en WordPress?<\/h3>\n<p>Vamos a dar un paso adelante con una consulta m\u00e1s avanzada basada en tipos de mensajes personalizados y taxonom\u00edas personalizadas. Digamos que tiene el siguiente tipo de puesto:<\/p>\n<p><strong>nombre<\/strong>: book<br \/>\n<strong>nombre de la taxonom\u00eda<\/strong>: book_category, book_author<br \/>\n<strong>soporte para<\/strong>: title, editor, thumbnail, excerpt, custom-fields<\/p>\n<p><strong>Tipos de Postes Personalizados y Taxonom\u00edas Personalizadas<\/strong><\/p>\n<p>Suponga que desea una lista de los libros m\u00e1s recientes en la taxonom\u00eda personalizada <code>book_category<\/code> especificada. Aqu\u00ed est\u00e1 el conjunto de argumentos:<\/p>\n<pre><code class=\"language-php\">$args = array(\n\t'post_type'\t\t=&gt; 'book',\n\t'tax_query'\t\t=&gt; array(\n\t\tarray(\n\t\t\t'taxonomy'\t=&gt; 'book_category',\n\t\t\t'field'\t\t=&gt; 'slug',\n\t\t\t'terms'\t\t=&gt; 'sci-fi'\n\t\t)\n\t),\n);<\/code><\/pre>\n<p>Los argumentos anteriores simplemente le dicen a WordPress que recupere todos los libros en <code>'sci-fi'<\/code> <code>'book_category'<\/code>.<\/p>\n<p>El par\u00e1metro <code>'tax_query'<\/code> toma una matriz de matrices de argumentos (es decir, una matriz de matrices). Estas matrices anidadas permiten construir consultas muy complejas basadas en m\u00faltiples taxonom\u00edas, como se muestra en el siguiente ejemplo:<\/p>\n<pre><code class=\"language-php\">$args = array(\n\t'numberposts'\t=&gt; 10,\n\t'post_type'\t\t=&gt; 'book',\n\t'relation'\t\t=&gt; 'AND',\n\t'tax_query'\t\t=&gt; array(\n\t\tarray(\n\t\t\t'taxonomy'\t=&gt; 'book_category',\n\t\t\t'field'\t\t=&gt; 'slug',\n\t\t\t'terms'\t\t=&gt; 'sci-fi'\n\t\t),\n\t\tarray(\n\t\t\t'taxonomy'\t=&gt; 'book_author',\n\t\t\t'field'\t\t=&gt; 'term_id',\n\t\t\t'terms'\t\t=&gt; 22\n\t\t)\n\t)\n);<\/code><\/pre>\n<p>Estos par\u00e1metros nos permiten recuperar una lista de los \u00faltimos 10 <code>'book'<\/code> en la\u00a0<code>'sci-fi'<\/code> <code>'book_category'<\/code>, escrita por el <code>'book_author'<\/code> con ID #22. El par\u00e1metro <code>'relation'<\/code> establece la relaci\u00f3n l\u00f3gica entre cada taxonom\u00eda listada en <code>'tax_query'<\/code>. Arriba fijamos su valor en <code>AND<\/code> porque necesitamos recuperar todos los libros que pertenecen a la categor\u00eda de <code>'sci-fi'<\/code>\u00a0<code>AND<\/code> escritos por el autor #22.<\/p>\n<h4>\u00bfC\u00f3mo Crear Metaconsultas Utilizando Par\u00e1metros de Campo Personalizados?<\/h4>\n<p>Ocasionalmente, es posible que necesite crear listas de mensajes basadas en una clave y\/o valor de campo personalizado espec\u00edfico.<\/p>\n<pre><code class=\"language-php\">$args = array(\n\t'meta_key'\t\t=&gt; 'cover',\n\t'meta_value'\t=&gt; 'paperback',\n\t'meta_compare'\t=&gt; '='\n);<\/code><\/pre>\n<p>Estos par\u00e1metros nos permiten recuperar todos los mensajes por clave y valor de campo personalizado. <code>'meta_compare'<\/code> establece el operador requerido para probar el valor del par\u00e1metro <code>'meta_value'<\/code>. Aqui <code>'meta_value'<\/code>\u00a0es\u00a0<code>'='<\/code>, que es tambi\u00e9n el valor por defecto.<\/p>\n<p>Los valores disponibles son <code>'='<\/code>, <code>'!='<\/code>, <code>'&gt;'<\/code>, <code>'&gt;='<\/code>, <code>'&lt;'<\/code>, <code>'&lt;='<\/code>, <code>'LIKE'<\/code>, <code>'NOT LIKE'<\/code>, <code>'IN'<\/code>, <code>'NOT IN'<\/code>, <code>'BETWEEN'<\/code>, <code>'NOT BETWEEN'<\/code>, <code>'NOT EXISTS'<\/code>, <code>'REGEXP'<\/code>, <code>'NOT REGEXP'<\/code> o\u00a0<code>'RLIKE'<\/code>.<\/p>\n<p>Este es un ejemplo bastante f\u00e1cil, pero podemos construir consultas m\u00e1s avanzadas. En el siguiente ejemplo, buscamos en la base de datos de libros de fantas\u00eda publicados despu\u00e9s de 2010:<\/p>\n<pre><code class=\"language-php\">$args = array(\n\t'post_type'\t\t=&gt; 'book',\n\t'meta_key'\t\t=&gt; 'year_published',\n\t'meta_value_num'\t=&gt; 2010,\n\t'meta_compare'\t=&gt; '&gt;',\n\t'tax_query'\t\t=&gt; array(\n\t\tarray(\n\t\t\t'taxonomy'\t=&gt; 'book_category',\n\t\t\t'field'\t\t=&gt; 'slug'\n\t\t\t'terms'\t\t=&gt; 'fantasy'\n\t\t)\n\t)\n);<\/code><\/pre>\n<p>Y podemos ir a\u00fan m\u00e1s lejos. En el siguiente ejemplo estamos mezclando un tipo de mensaje con una taxonom\u00eda personalizada y dos campos personalizados:<\/p>\n<pre><code class=\"language-php\">$args = array(\n\t'post_type'\t\t=&gt; 'book',\n\t'tax_query'\t\t=&gt; array(\n\t\tarray(\n\t\t\t'taxonomy'\t=&gt; 'book_category',\n\t\t\t'field'\t\t=&gt; 'slug'\n\t\t\t'terms'\t\t=&gt; array( 'fantasy' )\n\t\t)\n\t),\n\t'meta_query'\t=&gt; array(\n\t\t'relation'\t\t=&gt; 'AND',\n\t\tarray(\n\t\t\t'key'\t\t=&gt; 'year_published',\n\t\t\t'value'\t\t=&gt; 2010,\n\t\t\t'type'\t\t=&gt; 'numeric',\n\t\t\t'compare'\t=&gt; '&gt;',\n\t\t),\n\t\tarray(\n\t\t\t'key'\t\t=&gt; 'price',\n\t\t\t'value'\t\t=&gt; array( 10, 25 ),\n\t\t\t'type'\t\t=&gt; 'numeric',\n\t\t\t'compare'\t=&gt; 'BETWEEN',\n\t\t)\n\t)\n);<\/code><\/pre>\n<p>Aqu\u00ed establecemos una serie de par\u00e1metros para recuperar una lista de libros de fantas\u00eda publicados despu\u00e9s de 2010 que cuestan <code>BETWEEN<\/code> 10 y 25 d\u00f3lares.<\/p>\n<p>Puede ver que el par\u00e1metro <code>'meta_query'<\/code> funciona de forma muy parecida al par\u00e1metro <code>'tax_query'<\/code>. Mantiene una serie de matrices, lo que nos permite crear consultas avanzadas basadas en m\u00faltiples pares meta clave\/valor. Para una lista completa de par\u00e1metros de consulta y un buen n\u00famero de ejemplos, v\u00e9ase la <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_query\/\">documentaci\u00f3n <code>WP_Query<\/code><\/a>.<\/p>\n<h3>\u00bfPor Qu\u00e9 get_posts est\u00e1 Limitado a 5 Mensajes de WordPress?<\/h3>\n<p>La funci\u00f3n <code>get_posts<\/code> toma los mismos argumentos que <code>WP_Query::parse_query()<\/code> (<a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/WP_Query\/parse_query\/\">ver el Codex<\/a>), pero algunos par\u00e1metros espec\u00edficos hacen que funcione ligeramente diferente de un objeto <code>WP_Query<\/code>.<\/p>\n<p>Tal vez no us\u00f3 el par\u00e1metro <code>'numberposts'<\/code> en sus consultas y le est\u00e1s preguntando por qu\u00e9 s\u00f3lo ve 5 \u00edtems en su lista.<\/p>\n<p>De forma predeterminada, el n\u00famero de mensajes que configure en la p\u00e1gina de administraci\u00f3n de <strong>Lectura de <\/strong><strong>\u2192 Determina<\/strong> el n\u00famero de mensajes que se recuperar\u00e1n mediante una consulta de WordPress. De todas formas, si no especifica un valor personalizado para <code>'numberposts'<\/code> o <code>'posts_per_page'<\/code>, <code>get_posts<\/code> devuelve un n\u00famero diferente de mensajes.<\/p>\n<ul>\n<li>Se entender\u00e1 por <code>'numberposts'<\/code> el n\u00famero total de posts que deben recuperarse. Es un alias de <code>'posts_per_page'<\/code> en <code>WP_Query<\/code>, pero hay una diferencia entre los dos: por defecto, <strong>el n\u00famero de mensajes a recuperar al usar <\/strong><code><strong>get_posts<\/strong><\/code><strong> es 5<\/strong>, mientras que <code>`posts_per_page'<\/code> en <code>WP_Query<\/code> propone por defecto el n\u00famero de mensajes por p\u00e1gina de su blog de WordPress. Puede redefinir el valor predeterminado estableciendo un valor personalizado para <code>'numberposts'<\/code> o <code>'posts_per_page'<\/code> en la matriz de argumentos.<\/li>\n<\/ul>\n<p>Adem\u00e1s de <code>'numberposts'<\/code>, los siguientes par\u00e1metros son espec\u00edficos de <code>get_posts<\/code>:<\/p>\n<ul>\n<li>La<code>'category'<\/code> es una lista de ID de categor\u00eda separada por comas. Es un alias del par\u00e1metro <code>'cat'<\/code> en <code>WP_Query<\/code>.<\/li>\n<li><code>'include'<\/code> es una lista de IDs separados por comas. Este es un alias del par\u00e1metro <code>'post__in'<\/code> en <code>WP_Query<\/code>.<\/li>\n<li><code>'exclude'<\/code> es una lista de ID de mensajes separada por comas.<\/li>\n<li><code>'suppress_filters'<\/code> especifica si se deben suprimir los filtros. Este par\u00e1metro por defecto es <code>true<\/code> en <code>get_posts<\/code>, mientras que por defecto es <code>false<\/code> en <code>WP_Query<\/code> (<a href=\"https:\/\/core.trac.wordpress.org\/browser\/tags\/5.2\/src\/wp-includes\/class-wp-query.php#L709\">ver en Track<\/a>).<\/li>\n<\/ul>\n<p>La funci\u00f3n <code>get_posts<\/code> est\u00e1 definida en <code>wp-includes\/post.php<\/code>. Puede profundizar en c\u00f3mo funciona <code>get_posts<\/code> revisando el c\u00f3digo fuente <a href=\"https:\/\/core.trac.wordpress.org\/browser\/tags\/5.2\/src\/wp-includes\/post.php#L1901\">en Track (WordPress 5.2)<\/a> o en su instalaci\u00f3n local de WordPress.<\/p>\n<h3>Pedidos de Art\u00edculos<\/h3>\n<p><code>'orderby'<\/code> y\u00a0<code>'order'<\/code> clasifican los elementos del conjunto de resultados. Puede ordenar las entradas por <code>'ID'<\/code>, <code>'author'<\/code>, <code>'title'<\/code>, <code>'name'<\/code>, <code>'type'<\/code>, <code>'date'<\/code>, <code>'modified'<\/code>, <code>'parent'<\/code>, <code>'rand'<\/code>, <code>'comment_count'<\/code> y de muchas otras maneras, en orden ascendente o descendente.<\/p>\n<p>Si tiene una consulta simple, s\u00f3lo necesita establecer un valor para <code>'order'<\/code> y <code>'orderby'<\/code>. En el siguiente ejemplo, los mensajes se clasifican por nombre de mensaje en orden ascendente:<\/p>\n<pre><code class=\"language-php\">$args = array(\n\t'author'\t=&gt; '1,5,12',\n\t'orderby'\t=&gt; 'name',\n\t'order'\t\t=&gt; 'ASC'\n);<\/code><\/pre>\n<p>Eso es bastante sencillo. Pero, \u00bfy si tuviera una consulta avanzada? Es decir, \u00bfpodemos ordenar los elementos por uno o m\u00e1s valores de campo personalizados en una metaconsulta avanzada?<\/p>\n<p>WordPress 4.0 y WordPress 4.2 han aportado importantes mejoras a los par\u00e1metros &#8216;orderby&#8217; y &#8216;meta_query&#8217;. Ahora tenemos una nueva sintaxis para ordenar por cl\u00e1usulas espec\u00edficas de una metaconsulta. Gracias a la nueva sintaxis, podemos utilizar \u00edndices para crear referencias a cl\u00e1usulas espec\u00edficas de la metaconsulta desde el par\u00e1metro `ordenby&#8217;.<\/p>\n<p>Gracias a estas mejoras, la meta consulta del ejemplo anterior se puede escribir de la siguiente manera:<\/p>\n<pre><code class=\"language-php\">$args = array(\n\t'meta_query'\t=&gt; array(\n\t\t'relation'\t\t=&gt; 'AND',\n\t\t'year_clause' =&gt; array(\n\t\t\t'key'\t\t=&gt; 'year_published',\n\t\t\t'value'\t\t=&gt; 2010,\n\t\t\t'type'\t\t=&gt; 'numeric',\n\t\t\t'compare'\t=&gt; '&gt;',\n\t\t),\n\t\t'price_clause' =&gt; array(\n\t\t\t'key'\t\t=&gt; 'price',\n\t\t\t'value'\t\t=&gt; array( 10, 25 ),\n\t\t\t'type'\t\t=&gt; 'numeric',\n\t\t\t'compare'\t=&gt; 'BETWEEN',\n\t\t)\n\t),\n\t'orderby' =&gt; 'price_clause',\n);<\/code><\/pre>\n<p>En el ejemplo anterior hemos ordenado los elementos por <code>'price_clause'<\/code>.<\/p>\n<p>Y podemos hacer a\u00fan m\u00e1s. <a href=\"https:\/\/make.wordpress.org\/core\/2014\/08\/29\/a-more-powerful-order-by-in-wordpress-4-0\/\">A partir de WordPress 4.0<\/a>, podemos pasar a <code>get_posts<\/code> una matriz de meta \u00edndices de consulta en lugar de un \u00fanico \u00edndice, como se ve en el ejemplo de abajo:<\/p>\n<pre><code class=\"language-php\">$args = array(\n\t'meta_query'\t=&gt; array(\n\t\t'relation'\t\t=&gt; 'AND',\n\t\t'year_clause' =&gt; array(\n\t\t\t'key'\t\t=&gt; 'year_published',\n\t\t\t'value'\t\t=&gt; 2010,\n\t\t\t'type'\t\t=&gt; 'numeric',\n\t\t\t'compare'\t=&gt; '&gt;',\n\t\t),\n\t\t'price_clause' =&gt; array(\n\t\t\t'key'\t\t=&gt; 'price',\n\t\t\t'value'\t\t=&gt; array( 10, 25 ),\n\t\t\t'type'\t\t=&gt; 'numeric',\n\t\t\t'compare'\t=&gt; 'BETWEEN',\n\t\t)\n\t),\n\t'orderby' =&gt; array( 'price_clause' =&gt; 'ASC', 'year_clause' =&gt; 'DESC' ),\n);<\/code><\/pre>\n<p>Enhorabuena, ha creado una metaconsulta avanzada, y ordenado los resultados primero por <code>'price_clause'<\/code> en orden ascendente, luego por <code>'year_clause'<\/code> en orden descendente.<\/p>\n<p>V\u00e9ase <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_query\/#order-orderby-parameters\">la lista completa de opciones de clasificaci\u00f3n<\/a> en el Codex.<\/p>\n<p>Es hora de mostrar los datos en la primera p\u00e1gina.<\/p>\n<p>Lectura sugerida: <a href=\"https:\/\/kinsta.com\/es\/blog\/phpinfo\/\">\u00bfC\u00f3mo Crear y Usar F\u00e1cilmente una P\u00e1gina phpinfo?<\/a>.<\/p>\n<h2 id=\"display\">\u00bfC\u00f3mo Mostrar los Datos Devueltos de get_posts?<\/h2>\n<p>WordPress <code>get_posts<\/code> devuelve una matriz de <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_post\/\">objetos <code>WP_Post<\/code><\/a> que nos da acceso a un n\u00famero de variables para cada mensaje seleccionado almacenado en la tabla de base de datos <code>wp_posts<\/code>:<\/p>\n<ul>\n<li>ID<\/li>\n<li>post_author<\/li>\n<li>post_name<\/li>\n<li>post_type<\/li>\n<li>post_title<\/li>\n<li>post_date<\/li>\n<li>post_date_gmt<\/li>\n<li>post_content<\/li>\n<li>post_excerpt<\/li>\n<li>post_status<\/li>\n<li>comment_status<\/li>\n<li>ping_status<\/li>\n<li>post_password<\/li>\n<li>post_parent<\/li>\n<li>post_modified<\/li>\n<li>post_modified_gmt<\/li>\n<li>comment_count<\/li>\n<li>menu_order<\/li>\n<\/ul>\n<figure id=\"attachment_54556\" aria-describedby=\"caption-attachment-54556\" style=\"width: 2176px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-54556 size-full\" src=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2019\/08\/estructura-tabla-wp-posts-phpmyadmin.png\" alt=\"Estructura de la tabla wp_posts en phpMyAdmin\" width=\"2176\" height=\"1542\"><figcaption id=\"caption-attachment-54556\" class=\"wp-caption-text\">Estructura de la tabla wp_posts en phpMyAdmin<\/figcaption><\/figure>\n<p>Usted puede acceder f\u00e1cilmente a estos datos con un ciclo de <code>foreach<\/code> como el siguiente:<\/p>\n<pre><code class=\"language-php\">$custom_posts = get_posts( $args );\n\nif( ! empty( $custom_posts ) ){\n\t$output = '&lt;ul&gt;';\n\tforeach ( $custom_posts as $p ){\n\n\t\t$output .= '&lt;li&gt;&lt;a href=\"' \n\t\t. get_permalink( $p-&gt;ID ) . '\"&gt;' \n\t\t. $p-&gt;post_title . '&lt;\/a&gt;&lt;\/li&gt;';\n\t}\n\n\t$output .= '&lt;\/ul&gt;';\n}\n\nreturn $output ?? '&lt;strong&gt;Sorry. No posts matching your criteria!&lt;\/strong&gt;';<\/code><\/pre>\n<p>Si <code>get_posts<\/code> encontr\u00f3 al menos una entrada, devuelva una matriz de elementos que podemos atravesar para mostrar el t\u00edtulo de la entrada y un enlace a la entrada original. Usamos la <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_permalink\/\">funci\u00f3n <code>get_permalink<\/code><\/a> para recuperar el permalink del post, ya que no tenemos una variable <code>WP_Post<\/code> correspondiente.<\/p>\n<p>Eso es bastante f\u00e1cil, pero \u00bfc\u00f3mo podemos implementar ese c\u00f3digo y construir nuestras listas personalizadas de mensajes usando WordPress <code>get_posts<\/code>?<\/p>\n<p>Puede mostrar listas de mensajes en sus p\u00e1ginas de varias maneras.<\/p>\n<ul>\n<li>Puede incluirlos en cualquier parte de la p\u00e1gina editando la <a href=\"https:\/\/kinsta.com\/es\/blog\/temas-child-wordpress\/\">plantilla de p\u00e1gina de un tema infantil<\/a>.<\/li>\n<li>Puede incluirlos en un <a href=\"https:\/\/kinsta.com\/es\/blog\/widgets-wordpress\/\">widget de la barra lateral<\/a>.<\/li>\n<li>Puede incluirlos en el contenido de un mensaje <a href=\"https:\/\/kinsta.com\/es\/blog\/codigos-cortos-wordpress\/\">con un c\u00f3digo abreviado personalizado<\/a>.<\/li>\n<\/ul>\n<h2 id=\"example\">Ejemplo del Mundo Real: \u00bfC\u00f3mo Mostrar una Lista Personalizada de Elementos con un C\u00f3digo Abreviado?<\/h2>\n<p>Le mostrar\u00e9 c\u00f3mo construir un atajo r\u00e1pido y f\u00e1cil que puede incluir en Su contenido. De todos modos, no voy a profundizar en los c\u00f3digos abreviados, ya que ya cubrimos ese tema en <a href=\"https:\/\/kinsta.com\/es\/blog\/codigos-cortos-wordpress\/\">una entrada anterior del blog<\/a>.<\/p>\n<p>En primer lugar, cree un nuevo directorio en la carpeta <code>wp-content\/plugins<\/code> de su <a href=\"https:\/\/kinsta.com\/es\/blog\/instalar-wordpress-localmente\/\">instalaci\u00f3n local de WordPress<\/a> o en un <a href=\"https:\/\/kinsta.com\/es\/docs\/alojamiento-wordpress\/entorno-staging\/\">entorno de preparaci\u00f3n<\/a>. En este ejemplo, he nombrado el directorio <strong>kinsta-shortcodes<\/strong>.<\/p>\n<p>En <code>wp-content\/plugins\/kinsta-shortcodes\/<\/code> crear un archivo.php con el mismo nombre que el nuevo directorio: <code>kinsta-shortcodes.php<\/code>.<\/p>\n<p>Abra el nuevo archivo en su <a href=\"https:\/\/kinsta.com\/es\/blog\/mejores-editores-texto\/\">editor de texto favorito<\/a> e incluya el siguiente encabezado:<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\/**\n * @package Kinsta_shortcodes\n * @version 1.0\n *\/\n\/*\nPlugin Name: Kinsta shortcodes\nPlugin URI: http:\/\/wordpress.org\/extend\/plugins\/#\nDescription: This is an example plugin \nAuthor: Your Name\nVersion: 1.0\nAuthor URI: https:\/\/yourwebsite.com\/\n*\/<\/code><\/pre>\n<p>Ahora tenemos un nuevo plugin, pero sigue sin hacer nada. Busque la pantalla de administraci\u00f3n de <strong>plugins<\/strong> en el <a href=\"https:\/\/kinsta.com\/es\/blog\/panel-control-administracion-wordpress\/\">panel de control de WordPress<\/a> y active el nuevo plugin asegur\u00e1ndose de que <a href=\"https:\/\/kinsta.com\/es\/blog\/depuracion-wordpress\/#how-to-manually-enable-wordpress-debug-mode\" target=\"_blank\" rel=\"noopener noreferrer\"><code>WP_DEBUG<\/code> est\u00e1 configurado como <code>verdadero<\/code><\/a> en su archivo wp-<code>config.php<\/code>.<\/p>\n<p>Su sandbox est\u00e1 ahora listo para sus guardias. El siguiente paso es registrar un gancho para un c\u00f3digo abreviado personalizado:<\/p>\n<pre><code class=\"language-php\">\/**\n * Add a hook for a shortcode tag\n *\/\nfunction kinsta_shortcodes_init(){\n\tadd_shortcode( 'kinsta_get_posts', 'kinsta_get_posts_cb' );\n}\nadd_action('init', 'kinsta_shortcodes_init');<\/code><\/pre>\n<p><code>kinsta_get_posts<\/code> es el nombre del c\u00f3digo abreviado y <code>kinsta_get_posts_cb<\/code> es la llamada de retorno definida a continuaci\u00f3n:<\/p>\n<pre><code class=\"language-php\">\/**\n * Register a shortcode\n *\n * @param array $atts Array of shortcode attributes\n *\/\nfunction kinsta_get_posts_cb( $atts ){\n\n\t\/\/ safely extract custom arguments and set default values\n\textract( shortcode_atts(\n\t\t\tarray(\n\t\t\t\t'numberposts'\t\t=&gt; 3,\n\t\t\t\t'post_type'\t\t\t=&gt; 'post',\n\t\t\t\t'book_category'\t\t=&gt; 'fantasy',\n\t\t\t\t'year_published'\t=&gt; 1900,\n\t\t\t\t'price_min'\t\t\t=&gt; 0,\n\t\t\t\t'price_max'\t\t\t=&gt; 50\n\t\t\t),\n\t\t\t$atts,\n\t\t\t'kinsta_get_posts'\n\t\t) );\n\n\t\/\/ define the array of query arguments\n\t$args = array(\n\t\t'numberposts'\t=&gt; $numberposts,\n\t\t'post_type'\t\t=&gt; $post_type,\n\t\t'tax_query'\t\t=&gt; array(\n\t\t\tarray(\n\t\t\t\t'taxonomy'\t=&gt; 'book_category',\n\t\t\t\t'field'\t\t=&gt; 'slug',\n\t\t\t\t'terms'\t\t=&gt; $book_category,\n\t\t\t)\n\t\t),\n\t\t'meta_query'\t=&gt; array(\n\t\t\t'relation'\t\t=&gt; 'AND',\n\t\t\t'year_clause'\t=&gt; array(\n\t\t\t\t'key'\t\t=&gt; 'year_published',\n\t\t\t\t'value'\t\t=&gt; $year_published,\n\t\t\t\t'type'\t\t=&gt; 'numeric',\n\t\t\t\t'compare'\t=&gt; '&gt;',\n\t\t\t),\n\t\t\t'price_clause'\t=&gt; array(\n\t\t\t\t'key'\t\t=&gt; 'price',\n\t\t\t\t'value'\t\t=&gt; array( $price_min, $price_max ),\n\t\t\t\t'type'\t\t=&gt; 'numeric',\n\t\t\t\t'compare'\t=&gt; 'BETWEEN',\n\t\t\t)\n\t\t),\n\t\t'orderby' =&gt; array( 'price_clause' =&gt; 'ASC' )\n\t);\n\n\t$custom_posts = get_posts( $args );\n\n\tif( ! empty( $custom_posts ) ){\n\t\t$output = '&lt;ul&gt;';\n\t\tforeach ( $custom_posts as $p ){\n\n\t\t\t$output .= '&lt;li&gt;&lt;a href=\"' \n\t\t\t. get_permalink( $p-&gt;ID ) . '\"&gt;' \n\t\t\t. $p-&gt;post_title . '&lt;\/a&gt; (' \n\t\t\t. get_post_meta( $p-&gt;ID, 'year_published', true ) \n\t\t\t. ') - Price: ' . get_post_meta( $p-&gt;ID, 'price', true ) . '&lt;\/li&gt;';\n\t\t}\n\n\t\t$output .= '&lt;\/ul&gt;';\n\t}\n\nreturn $output ?? '&lt;strong&gt;Sorry. No posts matching your criteria!&lt;\/strong&gt;';<\/code><\/pre>\n<p>Establecemos seis atributos de c\u00f3digo abreviado que usamos para definir una matriz de par\u00e1metros, que finalmente se pasa a la funci\u00f3n WordPress <code>get_posts<\/code>. Si <code>$custom_posts<\/code> no est\u00e1 vac\u00edo, entonces un ciclo <code>foreach<\/code> genera el HTML de una lista desordenada de elementos.<\/p>\n<p>Ahora usted y los autores de su blog pueden incluir listas de mensajes utilizando un c\u00f3digo abreviado como el siguiente:<\/p>\n<pre>[kinsta_get_posts post_type=\"book\" book_category=\"sci-fi\" numberposts=\"4\" price_min=1 price_max=250]<\/pre>\n<p>Por supuesto, puede cambiar el conjunto de argumentos a su gusto y ejecutar sus pruebas en cualquier puesto o p\u00e1gina de su sitio web de desarrollo.<\/p>\n<figure id=\"attachment_54811\" aria-describedby=\"caption-attachment-54811\" style=\"width: 1532px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-54811 size-full\" src=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2019\/10\/avanzada-mensajes-creados-funcion-get_posts.png\" alt=\"Una lista avanzada de mensajes creados con la funci\u00f3n get_posts\" width=\"1532\" height=\"1066\"><figcaption id=\"caption-attachment-54811\" class=\"wp-caption-text\">Una lista avanzada de mensajes creados con la funci\u00f3n get_posts<\/figcaption><\/figure>\n\n<h2>Resumen<\/h2>\n<p><strong>get_posts <\/strong>de WordPress es una potente funci\u00f3n que permite a los desarrolladores incluir listas de mensajes en cualquier parte de la interfaz de su sitio web de WordPress. Utiliza <code>WP_Query<\/code> pero es m\u00e1s f\u00e1cil de usar y es preferible a <code>WP_Query<\/code> cuando s\u00f3lo necesita listas de mensajes. De todos modos, se recomienda una referencia directa a <code>WP_Query<\/code> cuando necesite mostrar posts en un <a href=\"https:\/\/codex.wordpress.org\/The_Loop\">Loop<\/a>.<\/p>\n<p>As\u00ed que, construya sus listas, pruebe su c\u00f3digo, y cuando est\u00e9 seguro de que funciona bien, entonces (y s\u00f3lo entonces) emp\u00fajelo a su sitio web en vivo (pero <a href=\"https:\/\/kinsta.com\/es\/blog\/plugins-de-backup-wordpress\/\">primero haga una copia de seguridad<\/a>).<\/p>\n<p>Ahora nos gustar\u00eda saber de usted. \u00bfCu\u00e1l es su experiencia con la funci\u00f3n <code>get_posts<\/code> de WordPress? \u00bfTiene alg\u00fan caso de uso para compartir con nosotros? H\u00e1galo en los comentarios de abajo!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>WordPress get_posts es una poderosa funci\u00f3n que permite a los desarrolladores recuperar piezas de contenido de la base de datos de WordPress. Puede especificar hasta el &#8230;<\/p>\n","protected":false},"author":36,"featured_media":28117,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[414,390],"topic":[1304,1316],"class_list":["post-28113","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-webdev","tag-wp_query","topic-aprender-php","topic-funcion-php"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>WordPress get_posts: \u00bfC\u00f3mo Utilizar Esta \u00datil Funci\u00f3n PHP para Construir Listas de Mensajes?<\/title>\n<meta name=\"description\" content=\"\u00bfNecesita crear listas de mensajes, p\u00e1ginas o tipos de mensajes personalizados? Aprenda c\u00f3mo hacerlo con la funci\u00f3n get_posts de WordPress en este extenso tutorial!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WordPress get_posts: \u00bfC\u00f3mo Utilizar Esta \u00datil Funci\u00f3n PHP para Construir Listas de Mensajes?\" \/>\n<meta property=\"og:description\" content=\"\u00bfNecesita crear listas de mensajes, p\u00e1ginas o tipos de mensajes personalizados? Aprenda c\u00f3mo hacerlo con la funci\u00f3n get_posts de WordPress en este extenso tutorial!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinsta.es\/\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-18T15:04:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-23T15:29:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2019\/10\/wordpress-get_posts.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Carlo Daniele\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"\u00bfNecesita crear listas de mensajes, p\u00e1ginas o tipos de mensajes personalizados? Aprenda c\u00f3mo hacerlo con la funci\u00f3n get_posts de WordPress en este extenso tutorial!\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2019\/10\/wordpress-get_posts.png\" \/>\n<meta name=\"twitter:creator\" content=\"@carlodaniele\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Carlo Daniele\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/\"},\"author\":{\"name\":\"Carlo Daniele\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63\"},\"headline\":\"WordPress get_posts: \u00bfC\u00f3mo Utilizar Esta \u00datil Funci\u00f3n PHP para Construir Listas de Mensajes?\",\"datePublished\":\"2019-10-18T15:04:17+00:00\",\"dateModified\":\"2023-08-23T15:29:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/\"},\"wordCount\":2734,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2019\/10\/wordpress-get_posts.png\",\"keywords\":[\"webdev\",\"WP_Query\"],\"articleSection\":[\"Desarrollo de WordPress\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/\",\"url\":\"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/\",\"name\":\"WordPress get_posts: \u00bfC\u00f3mo Utilizar Esta \u00datil Funci\u00f3n PHP para Construir Listas de Mensajes?\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2019\/10\/wordpress-get_posts.png\",\"datePublished\":\"2019-10-18T15:04:17+00:00\",\"dateModified\":\"2023-08-23T15:29:10+00:00\",\"description\":\"\u00bfNecesita crear listas de mensajes, p\u00e1ginas o tipos de mensajes personalizados? Aprenda c\u00f3mo hacerlo con la funci\u00f3n get_posts de WordPress en este extenso tutorial!\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2019\/10\/wordpress-get_posts.png\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2019\/10\/wordpress-get_posts.png\",\"width\":1460,\"height\":730,\"caption\":\"WordPress get_posts: C\u00f3mo Utilizar Esta \u00datil Funci\u00f3n PHP para Construir Listas de Mensajes\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Aprender PHP\",\"item\":\"https:\/\/kinsta.com\/es\/secciones\/aprender-php\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"WordPress get_posts: \u00bfC\u00f3mo Utilizar Esta \u00datil Funci\u00f3n PHP para Construir Listas de Mensajes?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/es\/#website\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluciones de alojamiento premium, r\u00e1pidas y seguras\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/es\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinsta.es\/\",\"https:\/\/x.com\/Kinsta_ES\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63\",\"name\":\"Carlo Daniele\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g\",\"caption\":\"Carlo Daniele\"},\"description\":\"Carlo is a passionate lover of webdesign and front-end development. He has been playing with WordPress for more than 20 years, also in collaboration with Italian and European universities and educational institutions. He has written hundreds of articles and guides about WordPress, published both on Italian and international websites, as well as on printed magazines. You can find him on LinkedIn.\",\"sameAs\":[\"https:\/\/frammentidicodice.com\/\",\"https:\/\/x.com\/carlodaniele\"],\"url\":\"https:\/\/kinsta.com\/es\/blog\/author\/carlodaniele\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"WordPress get_posts: \u00bfC\u00f3mo Utilizar Esta \u00datil Funci\u00f3n PHP para Construir Listas de Mensajes?","description":"\u00bfNecesita crear listas de mensajes, p\u00e1ginas o tipos de mensajes personalizados? Aprenda c\u00f3mo hacerlo con la funci\u00f3n get_posts de WordPress en este extenso tutorial!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/","og_locale":"es_ES","og_type":"article","og_title":"WordPress get_posts: \u00bfC\u00f3mo Utilizar Esta \u00datil Funci\u00f3n PHP para Construir Listas de Mensajes?","og_description":"\u00bfNecesita crear listas de mensajes, p\u00e1ginas o tipos de mensajes personalizados? Aprenda c\u00f3mo hacerlo con la funci\u00f3n get_posts de WordPress en este extenso tutorial!","og_url":"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinsta.es\/","article_published_time":"2019-10-18T15:04:17+00:00","article_modified_time":"2023-08-23T15:29:10+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2019\/10\/wordpress-get_posts.png","type":"image\/png"}],"author":"Carlo Daniele","twitter_card":"summary_large_image","twitter_description":"\u00bfNecesita crear listas de mensajes, p\u00e1ginas o tipos de mensajes personalizados? Aprenda c\u00f3mo hacerlo con la funci\u00f3n get_posts de WordPress en este extenso tutorial!","twitter_image":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2019\/10\/wordpress-get_posts.png","twitter_creator":"@carlodaniele","twitter_site":"@Kinsta_ES","twitter_misc":{"Escrito por":"Carlo Daniele","Tiempo de lectura":"15 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/"},"author":{"name":"Carlo Daniele","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63"},"headline":"WordPress get_posts: \u00bfC\u00f3mo Utilizar Esta \u00datil Funci\u00f3n PHP para Construir Listas de Mensajes?","datePublished":"2019-10-18T15:04:17+00:00","dateModified":"2023-08-23T15:29:10+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/"},"wordCount":2734,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2019\/10\/wordpress-get_posts.png","keywords":["webdev","WP_Query"],"articleSection":["Desarrollo de WordPress"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/","url":"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/","name":"WordPress get_posts: \u00bfC\u00f3mo Utilizar Esta \u00datil Funci\u00f3n PHP para Construir Listas de Mensajes?","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2019\/10\/wordpress-get_posts.png","datePublished":"2019-10-18T15:04:17+00:00","dateModified":"2023-08-23T15:29:10+00:00","description":"\u00bfNecesita crear listas de mensajes, p\u00e1ginas o tipos de mensajes personalizados? Aprenda c\u00f3mo hacerlo con la funci\u00f3n get_posts de WordPress en este extenso tutorial!","breadcrumb":{"@id":"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/#primaryimage","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2019\/10\/wordpress-get_posts.png","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2019\/10\/wordpress-get_posts.png","width":1460,"height":730,"caption":"WordPress get_posts: C\u00f3mo Utilizar Esta \u00datil Funci\u00f3n PHP para Construir Listas de Mensajes"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/es\/blog\/wordpress-get_posts\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/es\/"},{"@type":"ListItem","position":2,"name":"Aprender PHP","item":"https:\/\/kinsta.com\/es\/secciones\/aprender-php\/"},{"@type":"ListItem","position":3,"name":"WordPress get_posts: \u00bfC\u00f3mo Utilizar Esta \u00datil Funci\u00f3n PHP para Construir Listas de Mensajes?"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/es\/#website","url":"https:\/\/kinsta.com\/es\/","name":"Kinsta\u00ae","description":"Soluciones de alojamiento premium, r\u00e1pidas y seguras","publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/es\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinsta.es\/","https:\/\/x.com\/Kinsta_ES","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63","name":"Carlo Daniele","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g","caption":"Carlo Daniele"},"description":"Carlo is a passionate lover of webdesign and front-end development. He has been playing with WordPress for more than 20 years, also in collaboration with Italian and European universities and educational institutions. He has written hundreds of articles and guides about WordPress, published both on Italian and international websites, as well as on printed magazines. You can find him on LinkedIn.","sameAs":["https:\/\/frammentidicodice.com\/","https:\/\/x.com\/carlodaniele"],"url":"https:\/\/kinsta.com\/es\/blog\/author\/carlodaniele\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/28113","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/users\/36"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/comments?post=28113"}],"version-history":[{"count":11,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/28113\/revisions"}],"predecessor-version":[{"id":39524,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/28113\/revisions\/39524"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/28113\/translations\/en"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/28113\/translations\/pt"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/28113\/translations\/es"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/28113\/translations\/fr"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/28113\/translations\/nl"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/28113\/translations\/it"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/28113\/translations\/de"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/28113\/translations\/se"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/28113\/translations\/jp"},{"href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/28113\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media\/28117"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media?parent=28113"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/tags?post=28113"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/topic?post=28113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}