Publicaciones
Permite consultar, inspeccionar y gestionar entradas, páginas y tipos de contenido personalizados (custom post types / CPT) en WordPress mediante constructores fluidos de consulta, análisis de metadatos e inspección taxonómica.
La arquitectura de gestión de publicaciones consta de tres componentes interconectados:
- Servicio Posts (
Posts): El punto de entrada principal para búsquedas de publicaciones por ID numérico, slug o URL/enlace permanente, encadenamiento del constructor de consultas, descubrimiento de tipos y estados de publicaciones, inspección taxonómica y estadísticas visuales. - Modelo Post (
Post): Una entidad que representa una publicación, página o tipo de contenido personalizado individual de WordPress, exponiendo propiedades centrales normalizadas (ID,title,content,excerpt,status,type,slug,date,modified,author_id,parent_id,comment_count), resolución de enlaces permanentes y consultas de términos de taxonomía. - Modelo PostMeta (
PostMeta): Un repositorio de metadatos accesible mediantepost.metaque proporciona operaciones CRUD de metadatos e integración del constructor de consultas vinculada a la publicación principal.
Acceso y recuperación de publicaciones
Posts.get()
Recupera una única instancia del modelo Post por identificador (ID numérico, slug de publicación o URL/enlace permanente), o ejecuta las condiciones acumuladas del constructor de consultas cuando se llama sin argumentos.
Posts.get(
int|string|null:identifier = null
): Post|array|null
Modos de resolución
- Por ID numérico (
into cadena numérica): Consulta a través deget_post(absint($identifier)). Devuelve una instancia del modeloPost, onullsi la publicación no existe. - Por URL o enlace permanente (
stringque coincida con formatos de URL, que comience conhttp://ohttps://, o que contenga separadores de ruta/):- Resuelve mediante
url_to_postid($identifier)ourl_to_postid(home_url($identifier)). - Si no se resuelve, extrae la ruta a través de
wp_parse_url($identifier, PHP_URL_PATH)y consultaget_page_by_path()en todos los tipos de publicaciones registrados. - Si aún no se resuelve, realiza una consulta de respaldo mediante
get_posts()buscando coincidencias con el nombre base de la ruta URL en todos los tipos y estados de publicaciones. - Devuelve una instancia del modelo
Post, onullsi no se encuentra ninguna coincidencia.
- Resuelve mediante
- Por slug / Nombre de publicación (
string): Consulta medianteget_posts()conname = sanitize_title($identifier)en todos los tipos de publicaciones ('any') y estados ('any'). Devuelve una instancia del modeloPost, onullsi ninguna publicación coincide con el slug. - Sin argumentos (
null): Ejecuta las condiciones acumuladas delQueryBuildercontrawp_posts, replica las filas coincidentes en una tabla SQLite en memoria, vacía el búfer y devuelve los resultados como un arreglo de objetos de fila.
Ejemplos
/* Buscar publicación por ID numérico */
Posts.get(42)
/* Buscar publicación por slug */
Posts.get('hello-world')
/* Buscar publicación por URL completa */
Posts.get('https://example.com/2026/08/sample-post/')
/* Buscar publicación por ruta relativa */
Posts.get('/sample-page/')
Constructor de consultas de publicaciones (query builder)
El servicio Posts incorpora métodos encadenables de constructor de consultas. Las condiciones se acumulan en grupos y se compilan en SQL parametrizado cuando se ejecutan a través de get() o query(). Los datos replicados se colocan en una tabla SQLite en memoria y se descartan al vaciar el búfer.
Posts.where()
Agrega una condición WHERE combinada con lógica AND dentro del grupo de condiciones actual.
Posts.where(
string:column,
mixed:operator_or_value,
mixed:value = null
): Posts
Firmas de llamada
- Igualdad (Dos argumentos):
Posts.where('column', 'value') - Condición IN (Dos argumentos con arreglo):
Posts.where('column', ['val1', 'val2']) - Operador de comparación (Tres argumentos):
Posts.where('column', 'operator', 'value')
Operadores de comparación compatibles
La forma de tres argumentos Posts.where(column, operator, value) acepta operadores de comparación estándar de SQL como cadenas:
| Operador | Descripción | Ejemplo |
|---|---|---|
'=' | Igualdad exacta (predeterminado) | Posts.where('post_status', '=', 'publish').get(), o Posts.where('post_status', 'publish').get() |
'>' | Mayor que | Posts.where('ID', '>', 100).get() |
'>=' | Mayor o igual que | Posts.where('ID', '>=', 100).get() |
'<' | Menor que | Posts.where('ID', '<', 50).get() |
'<=' | Menor o igual que | Posts.where('ID', '<=', 50).get() |
'!=', '<>' | No igual | Posts.where('post_status', '!=', 'trash').get() |
'like' | Coincidencia de patrones SQL LIKE | Posts.where('post_title', 'like', '%announcement%').get() |
'not like' | Coincidencia de patrones SQL LIKE negada | Posts.where('post_title', 'not like', '%draft%').get() |
'in' | Pertenencia a conjuntos (el valor debe ser un arreglo) | Posts.where('post_type', 'in', ['post', 'page']).get() |
'not in' | Pertenencia a conjuntos negada (el valor debe ser un arreglo) | Posts.where('post_status', 'not in', ['trash', 'auto-draft']).get() |
'between' | Comprobación de rango (el valor debe ser un arreglo de dos elementos [min, max]) | Posts.where('post_date', 'between', ['2026-01-01', '2026-12-31']).get() |
Los métodos del QueryBuilder (where(), or_where()) aceptan cadenas de operadores SQL estándar ('>', 'like', 'between') y las compilan en los objetos de condición recursivos con prefijo $ requeridos por Database.mirror().
Al invocar Database.mirror(table, where, options), se debe emplear la sintaxis de objetos declarativos documentada en Base de Datos (por ejemplo, { ID: { '$gt': 100 } }).
Ejemplos
/* Consultar páginas publicadas */
Posts.where('post_type', 'page').where('post_status', 'publish').get()
/* Consultar publicaciones creadas por un usuario con comparación de ID */
Posts.where('post_author', 1).where('ID', '>', 50).get()
/* Consultar publicaciones que coincidan con un patrón de título */
Posts.where('post_title', 'like', '%Release%').get()
Posts.or_where()
Agrega una condición WHERE que inicia un nuevo grupo de condiciones combinado con los grupos anteriores mediante lógica OR. Las condiciones añadidas dentro de cada grupo usando where() se combinan mediante AND.
Posts.or_where(
string:column,
mixed:operator_or_value,
mixed:value = null
): Posts
Ejemplo
/* Recuperar publicaciones que sean entradas publicadas o páginas pendientes de revisión */
Posts.where('post_type', 'post')
.where('post_status', 'publish')
.or_where('post_type', 'page')
.where('post_status', 'pending')
.get()
Posts.order_by()
Especifica el ordenamiento de columnas para los resultados de la consulta. Se puede encadenar varias veces para aplicar ordenamiento multi-columna.
Posts.order_by(
string:column,
string:direction = 'ASC'
): Posts
Parámetros
column(string, requerido): Nombre de la columna por la cual ordenar (por ejemplo,'ID','post_date','post_title','comment_count').direction(string, opcional): Dirección de ordenamiento ('ASC'o'DESC'). El valor predeterminado es'ASC'.
Ejemplo
/* Ordenar publicaciones publicadas por fecha de creación descendente */
Posts.where('post_status', 'publish')
.order_by('post_date', 'DESC')
.get()
/* Ordenamiento multi-columna: ordenar por tipo de post ascendente, luego por fecha descendente */
Posts.where('post_status', 'publish')
.order_by('post_type', 'ASC')
.order_by('post_date', 'DESC')
.get()
Posts.limit()
Establece el número máximo de registros de publicaciones a devolver.
Posts.limit(int:limit): Posts
Ejemplo
/* Recuperar las 5 publicaciones publicadas más recientes */
Posts.where('post_status', 'publish')
.order_by('post_date', 'DESC')
.limit(5)
.get()
Posts.offset()
Establece el número de filas a omitir para la paginación.
Posts.offset(int:offset): Posts
Ejemplo
/* Paginar resultados: omitir 20 filas y tomar 10 */
Posts.where('post_status', 'publish')
.order_by('ID', 'DESC')
.offset(20)
.limit(10)
.get()
Posts.query()
Replica la tabla wp_posts en SQLite utilizando las condiciones y opciones acumuladas, luego ejecuta una consulta SQL SELECT arbitraria contra la base de datos SQLite en memoria. Reinicia el estado del constructor tras la ejecución.
Posts.query(string:sql): array
Ejemplo
/* Ejecutar consulta de agregación arbitraria en la tabla de publicaciones replicada */
Posts.where('post_status', 'publish')
.query('SELECT post_type, COUNT(*) AS total FROM wp_posts GROUP BY post_type ORDER BY total DESC')
La extensión de PHP SQLite3 debe estar instalada y habilitada en tu servidor para que Posts.query() funcione.
Posts.count()
Cuenta registros coincidentes en la base de datos MySQL sin almacenar filas en memoria ni inicializar una tabla SQLite. Reinicia el estado del constructor tras la ejecución.
Posts.count(): int
Ejemplos
/* Contar publicaciones publicadas */
Posts.where('post_type', 'post').where('post_status', 'publish').count()
/* Contar páginas publicadas escritas por el usuario 1 */
Posts.where('post_type', 'page').where('post_author', 1).count()
Posts.to_sql()
Compila y devuelve la cadena de consulta SQL para las condiciones acumuladas sin ejecutarla. Reinicia el estado del constructor tras la compilación.
Posts.to_sql(bool:is_count = false): string
Parámetros
is_count(bool, opcional): Cuando estrue, compila una consultaSELECT COUNT(*)en lugar de una proyección de columnas. El valor predeterminado esfalse.
Ejemplos
/* Previsualizar consulta SQL compilada con ordenamiento y límites */
Posts.where('post_type', 'post')
.where('post_status', 'publish')
.order_by('post_date', 'DESC')
.limit(10)
.to_sql()
/* Previsualizar consulta SQL de conteo compilada */
Posts.where('post_type', 'page').where('post_status', 'publish').to_sql(true)
Introspección y descubrimiento de metadatos
El servicio Posts proporciona utilidades de ayuda para inspeccionar tipos de publicaciones registrados, estados, taxonomías y términos taxonómicos.
Posts.types()
Recupera una lista de todos los nombres de tipos de publicación registrados en WordPress.
Posts.types(): array
Valor de retorno
Devuelve un arreglo indexado de cadenas que contiene todos los slugs de tipos de publicación registrados. Por ejemplo:
[
'post',
'page',
'attachment',
'revision',
'nav_menu_item',
'custom_css',
'customize_changeset',
'oembed_cache',
'user_request',
'wp_block',
'wp_template',
'wp_template_part',
'wp_global_styles',
'wp_navigation'
]
Ejemplo
/* Listar todos los tipos de publicaciones registrados */
Posts.types()
Posts.statuses()
Recupera una lista de todos los nombres de estados de publicación registrados en WordPress.
Posts.statuses(): array
Valor de retorno
Devuelve un arreglo indexado de cadenas que contiene todos los slugs de estados de publicación registrados. Por ejemplo:
[
'publish',
'future',
'draft',
'pending',
'private',
'trash',
'auto-draft',
'inherit'
]
Ejemplo
/* Listar todos los estados de publicaciones registrados */
Posts.statuses()
Posts.taxonomies()
Recupera todas las taxonomías registradas en la instalación de WordPress, o las taxonomías asociadas con un tipo de publicación específico.
Posts.taxonomies(
string:post_type = ''
): array
Parámetros
post_type(string, opcional): Cuando se proporciona, devuelve solo los slugs de taxonomía asociados con ese tipo de publicación (a través deget_object_taxonomies). Cuando se omite o está vacío, devuelve todas las taxonomías registradas en la instalación (a través deget_taxonomies). El valor predeterminado es''.
Valor de retorno
Devuelve un arreglo indexado de slugs de taxonomía (por ejemplo, ['category', 'post_tag', 'nav_menu', 'link_category', 'post_format']).
Ejemplos
/* Recuperar todas las taxonomías registradas */
Posts.taxonomies()
/* Recuperar taxonomías registradas para el tipo 'post' */
Posts.taxonomies('post')
/* Recuperar taxonomías registradas para un tipo de contenido personalizado */
Posts.taxonomies('product')
Posts.terms()
Recupera términos para una taxonomía determinada y los formatea en un arreglo de objetos.
Posts.terms(
string:taxonomy,
array:args = []
): array
Parámetros
taxonomy(string, requerido): El slug de la taxonomía (por ejemplo,'category','post_tag').args(array, opcional): Argumentos pasados aget_terms()de WordPress. El valor predeterminado es[]. El argumentohide_emptyse establece por defecto enfalsesi no se especifica.
Valor de retorno
Devuelve un arreglo indexado de objetos con los siguientes campos:
| Campo | Tipo | Descripción |
|---|---|---|
term_id | int | Identificador único del término. |
name | string | Nombre público del término. |
slug | string | Slug del término sanitizado para URL. |
count | int | Número de objetos asociados con el término. |
Si la taxonomía no existe o se produce un error, devuelve un arreglo vacío [].
Ejemplos
/* Recuperar todas las categorías incluyendo las vacías */
Posts.terms('category')
/* Recuperar etiquetas ordenadas por recuento descendente */
Posts.terms('post_tag', { orderby: 'count', order: 'DESC', number: 10 })
Estadísticas y distribución
Posts.stats()
Calcula un desglose estadístico de todos los registros en la tabla wp_posts agrupados por tipo de post y estado, generando visualizaciones interactivas en la consola de Expression Lab.
Posts.stats(): array
Qué genera stats()
Al ejecutarse en Expression Lab, Posts.stats() consulta MySQL y renderiza:
- Tabla de visualización: Distribución tabular que muestra
post_type,post_statusycountde registros. - Gráfico de barras Vega-Lite (
Graph: Posts distribution by type): Gráfico de barras interactivo que agrupa los recuentos porpost_typey los codifica por color segúnpost_status.
Valor de retorno
Devuelve un arreglo de arreglos asociativos con la siguiente estructura:
[
{
post_type: 'post',
post_status: 'publish',
count: 142
},
{
post_type: 'page',
post_status: 'publish',
count: 12
},
{
post_type: 'post',
post_status: 'draft',
count: 5
}
]
Ejemplo
/* Generar estadísticas y gráficos de distribución de publicaciones */
Posts.stats()
Propiedades del modelo Post
Las instancias del modelo Post representan un registro individual de publicación, página o tipo de contenido personalizado de WordPress.
Post.ID
El identificador numérico de clave primaria de la publicación en la tabla wp_posts.
Post.ID: ?int
- Tipo:
?int(Solo lectura) - Descripción: ID de publicación en base de datos mapeado desde
WP_Post::$ID.
Ejemplo
Posts.get(42).ID
Post.title
El título de la publicación.
Post.title: string
- Tipo:
string(Solo lectura) - Descripción: Valor de cadena mapeado desde
WP_Post::$post_title.
Ejemplo
Posts.get(42).title
Post.content
El cuerpo de contenido principal de la publicación.
Post.content: string
- Tipo:
string(Solo lectura) - Descripción: Valor de cadena mapeado desde
WP_Post::$post_content.
Ejemplo
Posts.get(42).content
Post.excerpt
El extracto de la publicación.
Post.excerpt: string
- Tipo:
string(Solo lectura) - Descripción: Valor de cadena mapeado desde
WP_Post::$post_excerpt.
Ejemplo
Posts.get(42).excerpt
Post.status
El slug del estado de la publicación.
Post.status: string
- Tipo:
string(Solo lectura) - Descripción: Cadena de estado (por ejemplo,
'publish','draft','pending','private','trash') mapeada desdeWP_Post::$post_status.
Ejemplo
Posts.get(42).status
Post.type
El slug del tipo de publicación.
Post.type: string
- Tipo:
string(Solo lectura) - Descripción: Cadena de tipo de publicación (por ejemplo,
'post','page','attachment'o el slug de un tipo de contenido personalizado) mapeada desdeWP_Post::$post_type.
Ejemplo
Posts.get(42).type
Post.slug
El slug de la publicación sanitizado para URL.
Post.slug: string
- Tipo:
string(Solo lectura) - Descripción: Cadena de slug mapeada desde
WP_Post::$post_name.
Ejemplo
Posts.get(42).slug
Post.date
La marca de tiempo de creación de la publicación.
Post.date: string
- Tipo:
string(Solo lectura) - Descripción: Cadena de marca de tiempo MySQL formateada como
YYYY-MM-DD HH:MM:SS, mapeada desdeWP_Post::$post_date.
Ejemplo
Posts.get(42).date
Post.modified
La marca de tiempo de última modificación de la publicación.
Post.modified: string
- Tipo:
string(Solo lectura) - Descripción: Cadena de marca de tiempo MySQL formateada como
YYYY-MM-DD HH:MM:SS, mapeada desdeWP_Post::$post_modified.
Ejemplo
Posts.get(42).modified
Post.author_id
El ID de base de datos del usuario que escribió la publicación.
Post.author_id: int
- Tipo:
int(Solo lectura) - Descripción: ID numérico del autor mapeado desde
WP_Post::$post_author.
Ejemplo
Posts.get(42).author_id
Post.parent_id
El ID de base de datos de la publicación superior, si es jerárquica.
Post.parent_id: int
- Tipo:
int(Solo lectura) - Descripción: ID numérico de la publicación superior mapeado desde
WP_Post::$post_parent. Devuelve0si no tiene superior.
Ejemplo
Posts.get(42).parent_id
Post.comment_count
El número de comentarios aprobados en la publicación.
Post.comment_count: int
- Tipo:
int(Solo lectura) - Descripción: Recuento entero mapeado desde
WP_Post::$comment_count.
Ejemplo
Posts.get(42).comment_count
Post.meta
La instancia delimitada del repositorio de metadatos PostMeta asociada con esta publicación.
Post.meta: ?PostMeta
- Tipo:
?PostMeta(Solo lectura) - Descripción: Proporciona operaciones CRUD de metadatos (
get,set,delete,all) y filtrado con constructor de consultas delimitado al ID de base de datos de esta publicación.
Ejemplos
/* Recuperar metadato específico de la publicación */
Posts.get(42).meta.get('_thumbnail_id')
/* Recuperar todos los metadatos de la publicación */
Posts.get(42).meta.all()
Métodos del modelo Post
Post.get_permalink()
Recupera la URL del enlace permanente completo para la publicación.
Post.get_permalink(): string|false
Valor de retorno
Devuelve la cadena URL del enlace permanente a través de get_permalink(), o false si la resolución falla.
Ejemplo
/* Obtener la URL del enlace permanente de una publicación */
Posts.get(42).get_permalink()
Post.get_terms()
Recupera los términos de taxonomía asociados con la publicación.
Post.get_terms(string:taxonomy): array
Parámetros
taxonomy(string, requerido): El slug de la taxonomía (por ejemplo,'category','post_tag').
Valor de retorno
Devuelve un arreglo de objetos que representan los términos asignados a través de get_the_terms(). Cada objeto de término contiene:
| Campo | Tipo | Descripción |
|---|---|---|
term_id | int | Identificador único del término. |
name | string | Nombre del término. |
slug | string | Slug del término. |
Si no hay términos asignados o se produce un error, devuelve un arreglo vacío [].
Ejemplos
/* Recuperar categorías asignadas a la publicación */
Posts.get(42).get_terms('category')
/* Recuperar etiquetas asignadas a la publicación */
Posts.get(42).get_terms('post_tag')
Gestión de metadatos de publicación
Las operaciones de metadatos de publicación se acceden a través de la propiedad meta en una instancia del modelo Post (por ejemplo, Posts.get(42).meta).
PostMeta.get()
Recupera un valor de metadatos para la publicación utilizando get_post_meta(), o ejecuta las condiciones acumuladas del constructor de consultas en wp_postmeta cuando se llama sin argumentos.
PostMeta.get(
?string:key = null,
bool:single = true
): mixed
Parámetros
key(?string, opcional): El nombre de la clave de metadatos. Si se omite o esnull, ejecuta las condiciones acumuladas del constructor de consultas enwp_postmetapara esta publicación. El valor predeterminado esnull.single(bool, opcional): Si se devuelve un valor único (true) o un arreglo de valores (false). El valor predeterminado estrue.
Valor de retorno
Devuelve el valor de metadatos almacenado, o un arreglo de resultados del constructor de consultas cuando $key es null.
Ejemplos
/* Recuperar un valor único de metadatos */
Posts.get(42).meta.get('_edit_lock')
/* Recuperar todos los valores para una clave meta no única */
Posts.get(42).meta.get('custom_attachment_ids', false)
PostMeta.all()
Recupera todas las entradas de metadatos para la publicación desde wp_postmeta. Los valores se procesan mediante maybe_unserialize().
PostMeta.all(): array
Valor de retorno
Devuelve un arreglo asociativo que asigna cada clave meta a su valor (o arreglo de valores para claves con múltiples entradas).
Ejemplo
/* Inspeccionar todos los metadatos registrados para una publicación */
Posts.get(42).meta.all()
PostMeta.set()
Establece o actualiza una entrada de metadatos para la publicación.
PostMeta.set(
string:key,
mixed:value
): bool
Parámetros
key(string, requerido): El nombre de la clave de metadatos.value(mixed, requerido): El valor a almacenar.
Valor de retorno
Devuelve true si la base de datos se actualizó, false en caso contrario.
Lanza una excepción si EXPRESSION_LAB_DATABASE_READONLY está establecido en true.
Ejemplo
/* Actualizar metadatos personalizados */
Posts.get(42).meta.set('reading_time_minutes', 4)
PostMeta.delete()
Elimina una entrada de metadatos para la publicación de wp_postmeta.
PostMeta.delete(string:key): bool
Parámetros
key(string, requerido): El nombre de la clave de metadatos a eliminar.
Valor de retorno
Devuelve true si se eliminó con éxito, false en caso contrario.
Lanza una excepción si EXPRESSION_LAB_DATABASE_READONLY está establecido en true.
Ejemplo
/* Eliminar entrada de metadatos */
Posts.get(42).meta.delete('cache_hash')
Constructor de consultas en metadatos de publicación
El modelo PostMeta implementa el trait QueryBuilder. Todas las operaciones del constructor de consultas encadenadas en Post.meta se delimitan a la publicación principal a través de post_id = Post.ID.
Los registros de metadatos replicados se colocan en una tabla SQLite en memoria y se descartan al vaciar el búfer.
PostMeta.where()
Agrega una condición WHERE combinada con lógica AND dentro del grupo de condiciones actual en wp_postmeta.
PostMeta.where(
string:column,
mixed:operator_or_value,
mixed:value = null
): PostMeta
Firmas de llamada
- Igualdad (Dos argumentos):
post.meta.where('column', 'value') - Condición IN (Dos argumentos con arreglo):
post.meta.where('column', ['val1', 'val2']) - Operador de comparación (Tres argumentos):
post.meta.where('column', 'operator', 'value')
Operadores de comparación compatibles
| Operador | Descripción | Ejemplo |
|---|---|---|
'=' | Igualdad exacta (predeterminado) | Posts.get(42).meta.where('meta_key', '=', '_thumbnail_id').get() |
'>' | Mayor que | Posts.get(42).meta.where('meta_id', '>', 100).get() |
'>=' | Mayor o igual que | Posts.get(42).meta.where('meta_id', '>=', 100).get() |
'<' | Menor que | Posts.get(42).meta.where('meta_id', '<', 500).get() |
'<=' | Menor o igual que | Posts.get(42).meta.where('meta_id', '<=', 500).get() |
'!=', '<>' | No igual | Posts.get(42).meta.where('meta_key', '!=', '_edit_lock').get() |
'like' | Coincidencia de patrones SQL LIKE | Posts.get(42).meta.where('meta_key', 'like', '_oembed_%').get() |
'not like' | Coincidencia de patrones SQL LIKE negada | Posts.get(42).meta.where('meta_key', 'not like', '_wp_%').get() |
'in' | Pertenencia a conjuntos (el valor debe ser un arreglo) | Posts.get(42).meta.where('meta_key', 'in', ['_thumbnail_id', '_edit_last']).get() |
'not in' | Pertenencia a conjuntos negada (el valor debe ser un arreglo) | Posts.get(42).meta.where('meta_key', 'not in', ['_edit_lock', '_edit_last']).get() |
'between' | Comprobación de rango (el valor debe ser un arreglo de dos elementos [min, max]) | Posts.get(42).meta.where('meta_id', 'between', [100, 200]).get() |
Ejemplos
/* Consultar metadatos que coincidan con un patrón para una publicación específica */
Posts.get(42).meta.where('meta_key', 'like', '_wp_%').get()
/* Consultar claves de metadatos específicas */
Posts.get(42).meta.where('meta_key', 'in', ['_thumbnail_id', '_wp_page_template']).get()
PostMeta.or_where()
Agrega una condición WHERE que inicia un nuevo grupo de condiciones combinado con los grupos anteriores mediante lógica OR. Las condiciones añadidas dentro de cada grupo usando where() se combinan mediante AND. La delimitación a post_id = Post.ID se conserva en todos los grupos.
PostMeta.or_where(
string:column,
mixed:operator_or_value,
mixed:value = null
): PostMeta
Ejemplo
/* Consultar claves de metadatos que coincidan con cualquiera de dos claves */
Posts.get(42).meta.where('meta_key', '_thumbnail_id')
.or_where('meta_key', '_wp_page_template')
.get()
PostMeta.order_by()
Especifica el ordenamiento de columnas para los resultados de consultas de metadatos replicados.
PostMeta.order_by(
string:column,
string:direction = 'ASC'
): PostMeta
Parámetros
column(string, requerido): Nombre de la columna por la cual ordenar ('meta_id','meta_key','meta_value').direction(string, opcional): Dirección de ordenamiento ('ASC'o'DESC'). El valor predeterminado es'ASC'.
Ejemplo
/* Ordenar filas de metadatos por meta_id descendente */
Posts.get(42).meta.where('meta_key', 'like', 'custom_%')
.order_by('meta_id', 'DESC')
.get()
PostMeta.limit()
Establece el número máximo de filas de metadatos a devolver.
PostMeta.limit(int:limit): PostMeta
Ejemplo
/* Recuperar las primeras 5 filas de metadatos */
Posts.get(42).meta.order_by('meta_id', 'ASC')
.limit(5)
.get()
PostMeta.offset()
Establece el número de filas a omitir para la paginación a través de las filas de metadatos.
PostMeta.offset(int:offset): PostMeta
Ejemplo
/* Paginar filas de metadatos */
Posts.get(42).meta.order_by('meta_id', 'ASC')
.offset(5)
.limit(5)
.get()
PostMeta.query()
Replica la tabla wp_postmeta en SQLite utilizando las condiciones acumuladas (incluyendo la restricción de post_id principal) y opciones, luego ejecuta una consulta SQL SELECT arbitraria contra la base de datos SQLite en memoria. Reinicia el estado del constructor tras la ejecución.
PostMeta.query(string:sql): array
Ejemplo
/* Ejecutar consulta SQL directa contra metadatos de post replicados */
Posts.get(42).meta.where('meta_key', 'like', '_%')
.query('SELECT meta_id, meta_key, meta_value FROM wp_postmeta ORDER BY meta_id ASC')
La extensión de PHP SQLite3 debe estar instalada y habilitada en tu servidor para que PostMeta.query() funcione.
PostMeta.count()
Cuenta registros de metadatos coincidentes para la publicación en MySQL sin almacenar filas en memoria ni inicializar una tabla SQLite. Aplica la delimitación de post_id. Reinicia el estado del constructor tras la ejecución.
PostMeta.count(): int
Ejemplos
/* Contar todas las filas de metadatos para una publicación */
Posts.get(42).meta.count()
/* Contar claves de metadatos ocultas/privadas */
Posts.get(42).meta.where('meta_key', 'like', '_%').count()
PostMeta.to_sql()
Compila y devuelve la cadena de consulta SQL para la consulta de metadatos de la publicación sin ejecutarla. Aplica la delimitación post_id = Post.ID. Reinicia el estado del constructor tras la compilación.
PostMeta.to_sql(bool:is_count = false): string
Parámetros
is_count(bool, opcional): Cuando estrue, compila una consultaSELECT COUNT(*)en lugar de una proyección de columnas. El valor predeterminado esfalse.
Ejemplos
/* Previsualizar SQL de consulta de metadatos */
Posts.get(42).meta.where('meta_key', 'like', 'billing_%').order_by('meta_id', 'DESC').to_sql()
/* Previsualizar SQL de conteo de metadatos */
Posts.get(42).meta.where('meta_key', 'like', 'billing_%').to_sql(true)