Interrogare i Posts o ottenere Posts tramite campi personalizzati, è possibile?

3 mar 2011, 19:31:00
Visualizzazioni: 29.2K
Voti: 9

Se dovessi prendere una query post standard.

<?php query_posts('post_type=payment'); while (have_posts()) : the_post();?>

Questa volta vorrei interrogare il post attraverso 2 campi personalizzati che potrebbe contenere.

<?php query_posts('post_type=payment'.get_post_meta($post->ID,'bookingref', true).get_post_meta($post->ID,'customerref', true) ); while (have_posts()) : the_post(); ?>

Questo non funziona. È possibile fare qualcosa del genere e come si fa?

Qualche idea?

Meraviglioso

0
Tutte le risposte alla domanda 1
3
19

Per interrogare i post in base ai campi personalizzati puoi utilizzare il parametro 'meta_query'

<?php
$args = array(
    'post_type' => 'payment',
    'meta_query' => array(
            array(
                'key' => 'bookingref', // chiave del campo personalizzato
                'value' => 'il_valore_che_desideri', // valore da cercare
                'compare' => 'LIKE' // tipo di comparazione
            ),
            array(
                'key' => 'customerref', // chiave del campo personalizzato
                'value' => 'il_valore_che_desideri', // valore da cercare
                'compare' => 'LIKE' // tipo di comparazione
            )
    )
);
query_posts($args); while (have_posts()) : the_post();
?>

Non puoi usare get_post_meta all'interno della query perché restituisce il valore e non la chiave, inoltre richiede un ID del post per ottenere quel valore e prima della query $post->id non è nello scope.

3 mar 2011 19:40:39
Commenti

sì, questo è meglio della mia risposta (cancellata) - meta_query è il modo giusto per interrogare più chiavi personalizzate

anu anu
3 mar 2011 19:51:20

Meraviglioso, ben fatto. Manca però una parentesi. Ti serve .. )); query_posts($args) ..

Robin I Knight Robin I Knight
3 mar 2011 20:01:25

C'è una grande opportunità qui per educare, utilizzando WP_Query, e i costi prestazionali delle query sui meta

Tom J Nowell Tom J Nowell
17 gen 2017 21:53:39