Sé cómo obtener un valor de campo personalizado para una publicación específica.
get_post_meta($post_id, $key, $single);
Lo que necesito es obtener todos los valores asociados con una clave de publicación personalizada específica, en todas las publicaciones .
Alguien sabe de una manera eficiente de hacer esto? No me gustaría recorrer todas las ID de publicación en la base de datos.
Ejemplo:
4 publicaciones, todas con diferentes valores para un campo personalizado llamado 'Mood'. 2 publicaciones tienen el valor 'feliz', 1 publicación tiene 'enojado' y 1 publicación tiene 'triste'
Quiero publicar: en todas las publicaciones que tenemos: dos autores felices, uno enojado y uno triste.
Pero por MUCHAS publicaciones.
Lo que estoy buscando es:
- una función WP para obtener esto. o
- una consulta personalizada para obtener esto de la manera más eficiente posible.
custom-field
Mikkelbreum
fuente
fuente
Respuestas:
Un enfoque posible sería utilizar uno de los métodos auxiliares en la clase WPDB para hacer una consulta meta basada más refinada. Sin embargo, la advertencia del uso de algunas de estas funciones es que, por lo general, no se obtiene una matriz simple de datos y, por lo general, se deben hacer referencias innecesarias a las propiedades de los objetos, incluso si solo se solicita una columna o fila.
Por supuesto, no todas las funciones son iguales, y se hace una mención intencional al método WPDB ,
get_col
que devuelve una simple matriz plana de los datos consultados, hago esta mención específicamente porque el siguiente ejemplo recurrirá a este método .WordPress - WPDB Seleccionando una columna de datos
$ wpdb-> get_col ()
Aquí hay una función de ejemplo que consulta la base de datos para todas las publicaciones de un tipo de publicación elegido, estado de publicación y con una metaclave específica (o campo personalizado para los menos técnicos).
Entonces, por ejemplo, si desea averiguar qué publicaciones tienen una metaclave de calificación , para las películas de tipo de publicación y desea almacenar esa información dentro de una variable, un ejemplo de dicha llamada sería ...
Si no desea hacer nada más que imprimir esos datos en la pantalla, la función de implosión de PHP puede empalmar rápidamente esa simple matriz en líneas de datos.
También puede usar los datos devueltos para calcular cuántas publicaciones tienen estos meta valores haciendo un bucle simple sobre los datos devueltos y creando una matriz de los recuentos, por ejemplo.
Esta lógica podría aplicarse a varios tipos de datos y extenderse para funcionar de muchas maneras diferentes. Así que espero que mis ejemplos hayan sido útiles y lo suficientemente simples como para seguirlos.
fuente
DISTINCT
justo después deSELECT
en la función anterior. Podría ser útil.Solo me gustaría agregar una pequeña cosa al código de t31os anterior. Cambié "SELECT" en "SELECT DISTINCT" para eliminar entradas duplicadas cuando usé este código yo mismo.
fuente
No es bueno o necesario usar el $ wpdb global:
fuente
la forma más rápida sería una consulta SQL personalizada y no estoy seguro, pero puedes intentar
En todo caso, es un comienzo.
fuente
Para obtener todos los meta valores por una meta clave
Compruebe wp-> db wordpress codex
fuente
No hay ninguna razón por la que no pueda fusionar t31os y el código de Bainternet para tener una declaración preparada reutilizable (estilo wordpress) que devuelva el recuento y los valores en una operación eficiente.
Es una consulta personalizada, pero todavía usa la capa de abstracción de la base de datos de WordPress, por lo que, por ejemplo, no importa cuáles sean realmente los nombres de las tablas o si cambian, y es una declaración preparada, por lo que estamos mucho más seguros de los ataques SQL, etc. .
En este caso, ya no busco el tipo de publicación y excluyo cadenas vacías:
En este particular es
Esto devolverá una matriz de objetos así:
fuente
Use lo siguiente con foreach
Asume que el nombre de su clave de campo personalizado es
fuente