Cum să folosești meta_query pentru a verifica dacă un câmp meta are o valoare setată?
(WordPress 4.3.1)
Rulez o buclă personalizată și vreau să includ doar postările care au un fișier încărcat într-un câmp personalizat: audio_file.
Am încercat multe soluții de pe internet și până acum nimic nu funcționează.
Pot folosi meta_query pentru a verifica dacă o cheie are o valoare?
Iată încercarea mea curentă:
global $post;
$args = array(
'post_type' => array (
'podcast',
'event',
),
'posts_per_page' => 10,
'post_status' => 'publish',
'paged' => get_query_var( 'paged' ),
'meta_query' => array (
'key' => 'audio_file',
'value' => '' ,
'compare' => '!=',
//'type' => 'date',
),
);
global $wp_query;
$wp_query = new WP_Query( $args );
if ( have_posts() ) { while ( have_posts() ) { the_post();
Rezultatul dorit aici este să afișez postările unde 'audio_file' nu este gol.
Mulțumesc. (WordPress 4.3.1)

Am înțeles, meta_query trebuie să fie un array în interiorul unui array, deoarece este destinat pentru interogări complexe folosind 'relation'.
meta_query => array (
array (
//'relation' => 'OR',
'key' => 'audio_file', //Câmpul de verificat.
'value' => '', //Valoarea câmpului.
'compare' => '!=', //Condiția folosită pentru valoare.
),
),
Condiția '!=' (diferit de) '' (null) returnează true dacă un fișier a fost încărcat.

Aceasta ar putea ajuta pe cineva. Codul va căuta o valoare meta, dacă există și nu este goală.
'meta_query' => [
'relation' => 'AND',
[
'key' => 'your_key',
'compare' => 'EXISTS',
],
// Nu dorim valori goale
[
'key' => 'your_key',
'value' => '',
'compare' => '!=',
],
],

Pot folosi meta_query pentru a verifica dacă o cheie are o valoare?
Orice valoare? Folosește EXISTS
'meta_query' => array (
'key' => 'audio_file',
'value' => '' ,
'compare' => 'EXISTS',
'type' => 'date',
),
);
Nu știu de ce fișierul tău încărcat ar fi de tip date
. M-aș aștepta să fie binary
sau poate char

Se pare că tipul valorii este esențial acum. Nu am reușit să fac interogarea meta să funcționeze corect fără a utiliza tipul. Mai ales când verificăm existența valorii.
Acest cod nu funcționează acum.
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'meta_key',
'value' => '',
'compare' => '!=',
),
),
Acesta funcționează.
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'meta_key',
'value' => '',
'compare' => '!=',
'type' => 'NUMERIC'
),
),
Singura diferență este tipul.
