Cargue todos los campos personalizados de WordPress a través de la consulta de la base de datos
A la hora de recuperar información de la base de datos de WordPress prefiero evitar hacer consultas directas a la base de datos, pero hay ocasiones en las que pueden ser útiles (y es importante que se haga bien).
Un caso de uso en el que podría ser útil es cuando necesita recuperar un conjunto de datos de un solo tipo. Caso en cuestión: digamos que necesita cargar todos los campos personalizados de WordPress.
En el momento de escribir este artículo, no hay ninguna función de la que tenga conocimiento que haga esto, así que así es como consulto la base de datos para hacerlo.
Cargar todos los campos personalizados de WordPress
Hay varias cosas a tener en cuenta sobre los campos personalizados que están asociados con una publicación determinada:
- los campos personalizados se almacenan en los metadatos de la publicación,
- los campos personalizados se consideran privados, por lo que tienen un prefijo con un guión bajo,
- a los estándares de codificación de WordPress no les gustará esto (por lo que es posible que deba ignorar los estándares)
Puedes leer todo sobre ellos en el Codex.
Y sí, es fácil obtener toda la información personalizada para una sola publicación. Pero si está trabajando en un proyecto en el que necesita recuperar todos los campos personalizados, es decir, aquellos que son privados, debe asegurarse de que está consultando cadenas que comienzan con un guión bajo.
Entonces, para cargar todos los campos personalizados de WordPress en la base de datos, aquí está la consulta que uso :
<?php
function get_the_custom_fields() {
global $wpdb;
$results = $wpdb->get_results(
$wpdb->prepare(
"
SELECT meta_key, meta_value
FROM $wpdb->postmeta
WHERE meta_key REGEXP '%s'
", '^[_]') );
return $results;
}
Algunas cosas a tener en cuenta sobre la consulta anterior:
- Estoy usando la función de preparación antes de get_results. Esto es para parametrización y seguridad. Si es nuevo para ti, te recomiendo leer este artículo.
- Esto devuelve todas las claves meta y valores meta en una matriz,
- Según la cantidad de registros que desea devolver, esto puede llevar algún tiempo (y tal vez debería hacerse en lotes).
Finalmente, para aquellos que tengan curiosidad, los índices no existen en la columna meta_value pero sí en la columna meta_key.
Las columnas en la tabla Post Meta con índices.
Entonces, si opta por modificar la consulta y está buscando usar columnas que tengan índices, consulte meta_id, post_id y meta_key.