Pregunta

Estoy tratando de usar una lógica condicional para comparar campos personalizados en mi consulta, pero un poco atascado. ¿Cómo obtendría todas las publicaciones con el lanzamiento de Project y PermanentArtist establecidos en 'True'?

Esto es lo que tengo hasta ahora, supongo que tiene algo que ver con 'Comparar':

Gracias

OSU

EDITAR: Para aclarar lo que quiero hacer, estoy tratando de excluir páginas que tengan dos valores de campo personalizados (liberado Project y PermanentArtist en este caso) establecidos en 'Falso'. Estos se establecen a través de las casillas de verificación generadas utilizando la plantilla de campo personalizada del complemento.

He actualizado el código para ilustrar que necesito filtrar todas las páginas con estos dos campos personalizados establecidos en falso:

global $post;
$artist_args = array(
    'post_type' => 'page',
    'post_parent' => $post->ID,
    'posts_per_page' => -1,
    'orderby' => 'name',
    'order' => 'ASC',
    'meta_query' => array(
        array(
            'key' => 'ReleasedProject',
            'value' => 'false'
        ),
        array(
            'key' => 'PermanentArtist',
            'value' => 'false'
        )
    )
);
$my_query = new WP_Query($artist_args);
¿Fue útil?

Solución

Si quieres todas las publicaciones que tienen ReleasedProject Y PermanentArtist Ambos establecidos en verdadero, debes cambiar el value claves para que ambos 'true'. Si desea excluir todas las publicaciones que tienen ambas configuradas para 'false', necesitas agregar 'compare' => '!=' a ambas matrices de meta consulta.

EDITAR

La lógica detrás de las meta consultas es tal que se deben cumplir todas las condiciones (es un AND relación). Entonces si dices

'meta_query' => array(
    array(
        'key' => 'ReleasedProject',
        'value' => 'false'
    ),
    array(
        'key' => 'PermanentArtist',
        'value' => 'false'
    )
)

Eso significa "encontrar todas las publicaciones que han publicado el proyecto idéntico a 'false' Y artista permanente idéntico a 'false'. "Si agregaras el 'compare' => '!=' Declaración Como mencioné anteriormente, sería decir "Encuentra todas las publicaciones que hayan publicado el proyecto no idéntico a 'false' Y artista permanente no idéntico a 'false'. "Si tienes una publicación que ha lanzado el proyecto establecido en 'false' y artista permanente establecido en 'true', no aparecerá en ninguna de esas consultas.

Además, si falta un meta valor, tampoco aparecerá en los resultados. Entonces, si tiene una publicación con el proyecto lanzado establecido en True, y el artista permanente no establecido, esta meta consulta no encontrará esa publicación:

'meta_query' => array(
    array(
        'key' => 'ReleasedProject',
        'value' => 'false',
        'compare' => '!='
    ),
    array(
        'key' => 'PermanentArtist',
        'value' => 'false'
        'compare' => '!='
    )
)

Básicamente, las consultas meta no hacen 'ni' cheques, hacen 'ambas verificaciones/y' cuando tiene múltiples consultas meta.

Licenciado bajo: CC-BY-SA con atribución
scroll top