Estoy tratando de consultar un tipo de publicación personalizada para un sistema de galería. Tengo una casilla de verificación para establecer una galería como galería "destacada" (configurada a través del complemento Más campos): si está marcada, el valor meta se convierte en 1 y, si no está marcado, se convierte en 0. Todo bien. Sin embargo, si la casilla nunca ha sido marcada, la meta clave nunca se crea, lo que significa que no puedo consultar NOT LIKE 1 porque no existe.
La consulta que quiero es extraer 4 galerías que no están marcadas como '1' en este metavalor, pero también aquellas que no tienen este valor en absoluto. ¿Hay alguna forma de dar siempre a las publicaciones recién agregadas un valor predeterminado para esta metaclave (es decir, siempre haga que sean 0 de forma predeterminada si no se marca la casilla) o hay una forma de consultar la clave que aún no se ha configurado?
Mi consulta actual es:
$args = array(
'post_type' => 'gallery',
'showposts' => 4,
'meta_key' => 'gal-ID',
'order_by' => 'meta_value',
'order' => 'ASC',
'meta_query' => array( array(
'key' => 'main-gal',
'value' => false,
) ),
) );
Y he intentado varios intentos con 'compare' => 'NOT LIKE', '! =' Etc. etc.
¿Algunas ideas? Este boleto parece implicar que es algo que debe resolverse:
http://core.trac.wordpress.org/ticket/18158
¡Gracias!
fuente
Según los parámetros de campo personalizados en el Codex, hay una
NOT EXISTS
comparación especial disponible desde WP versión 3.5Técnicamente, produce algo como seguir una consulta SQL en solicitudes de publicaciones:
Funciona uniendo la tabla meta en la clave proporcionada y solo seleccionando registros donde eso no haya resultado en datos significativos (
IS NULL
). Por lo tanto, funciona solo para el caso en que la clave no existe en absoluto y no funcionará para las claves que existen con valores falsos .fuente
NOT EXISTS
comparación. Como solución alternativa para las teclas meta no establecidas, solo guardo un 0 en elsave_post
gancho si la tecla meta no está configurada. ComoNOT EXISTS
funciona ¿Ordenará la consulta del OPmain-gal
y luego completará el 4 con las publicaciones que no tienen ese meta?Como señaló el ticket, no es compatible ... hasta entonces, tendrá que confiar en una solución personalizada.
Algunos usuarios han pedido esto antes, o al menos preguntaron cómo hacerlo en los foros de WordPress.org, así que escribí una función para hacer el trabajo que nunca tuve (pegar), afortunadamente encontré el tema original donde proporcioné el enlace pastebin (que no debería caducar).
http://pastebin.com/kgLt1RrG
Escribí eso hace 8 meses y no lo he probado (desde entonces), así que avíseme de cualquier problema.
Espero que ayude..
fuente
El método más simple, aunque no el más limpio:
Esto le dará todas sus galerías ordenadas por la meta clave. El siguiente paso es averiguar si las galerías con el valor 1 vienen después o antes de las otras publicaciones. De esta manera puedes:
Otros métodos que no requieren una instrucción SQL personalizada:
fuente