it-swarm.com.de

meta_key und meta_value arbeiten nicht zusammen

Ich versuche, die Schleife zu filtern, um Beiträge zu finden, die einen meta_key mit einem bestimmten meta_value haben. Ich habe mir den Codex angesehen und Folgendes ohne Glück versucht:

// No results
$args = array(
    'post_type' => 'cqpp_interventions',
    'posts_per_page' => '-1',
    'meta_query' => array(
            'relation' => 'OR',
            array(
                'meta_key' => 'priority',
                /* Tried this too
                'meta_value' => '80',
                'compare' => '='
                */
                'meta_value' => array('80'),
                'compare' => 'IN' )
    )
);

// No results
$args = array(
    'post_type' => 'cqpp_interventions',
    'posts_per_page' => '-1',
    'meta_key' => 'priority',
    'meta_value' => 80
);

// This list me all cqpp_interventions and I can confirm that I have some with meta_value set to 80
$args = array(
    'post_type' => 'cqpp_interventions',
    'posts_per_page' => '-1',
    'meta_key' => 'priority'
);


$cqpp_posts = get_posts( $args );

So überprüfe ich innerhalb der Schleife:

$priority = get_post_meta( get_the_ID(), 'priority');
echo '<pre>';
var_dump($priority);
echo '</pre>';

was in ... resultiert:

search.php:16:
array (size=1)
    0 => 
        array (size=1)
            0 => string '80' (length=2)

search.php:16:
array (size=1)
    0 => 
        array (size=2)
        0 => string '80' (length=2)
        1 => string '91' (length=2)

Was kann ich tun, um das zu beheben?

1

Sie könnten dies versuchen:

$args = array(
    'post_type' => 'cqpp_interventions',
    'posts_per_page' => '-1',
    'meta_query' => array(
        array(
            'key' => 'priority',
            'value' => '80'
        )
    )
);

Das eigentliche Problem bei Ihrer Abfrage ist, dass Sie meta_key und meta_value übergeben. Die Arrays in Ihrem meta_query-Argument sollten jedoch stattdessen die Schlüssel key und value enthalten.

Das würde auch funktionieren:

'key' => 'priority',
'value' => array('80')
2
Chin Leung

Aus der Referenz Ihrer ersten $ args

$args = array(
    'post_type' => 'cqpp_interventions',
    'posts_per_page' => '-1',
    'meta_query' => array(
            'relation' => 'OR',
            array(
                'meta_key' => 'priority',
                /* Tried this too
                'meta_value' => '80',
                'compare' => '='
                */
                'meta_value' => array('80'),
                'compare' => 'IN' )
    )
);

Sie haben 'relation' => 'OR' hinzugefügt, was nicht benötigt wird. Die relation muss hinzugefügt werden, wenn mehrere Metawerte abgefragt werden sollen. Ein Vergleich ist auch nicht erforderlich, wenn Sie einen bestimmten Wert wünschen, da standardmäßig = verwendet wird.

Die aktualisierten $ args werden sein

$args = array(
    'post_type' => 'cqpp_interventions',
    'posts_per_page' => '-1',
    'meta_query' => array(
            array(
                'meta_key' => 'priority',
                'meta_value' => '80', // since 80 is string
             )
    )
);

// try either of below.
$myPost = new WP_Query( $args ); // fetch post and managed in objects
$myPost = get_posts( $args ); // fetch post and store in array

Hoffe das wird dir helfen.

Vielen Dank

0
Aftab