Interogare articole sau obținere articole după câmpuri personalizate în WordPress

3 mar. 2011, 19:31:00
Vizualizări: 29.2K
Voturi: 9

Dacă aș folosi o interogare standard pentru articole.

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

De data aceasta aș dori să interoghez articolele după 2 câmpuri personalizate pe care le poate conține.

<?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(); ?>

Asta nu funcționează. Este posibil așa ceva și cum se face?

Aveți idei?

Minunat

0
Toate răspunsurile la întrebare 1
3
19

Pentru a interoga postări după câmpuri personalizate, poți utiliza parametrul 'meta_query'

<?php
$args = array(
    'post_type' => 'payment',
    'meta_query' => array(
            array(
                'key' => 'bookingref', // cheia câmpului personalizat
                'value' => 'valoarea_dorită',
                'compare' => 'LIKE' // comparație de tip LIKE
            ),
            array(
                'key' => 'customerref', // cheia câmpului personalizat
                'value' => 'valoarea_dorită',
                'compare' => 'LIKE' // comparație de tip LIKE
            )
    )
);
query_posts($args); while (have_posts()) : the_post();
?>

Nu poți utiliza get_post_meta în interiorul interogării deoarece aceasta returnează valoarea și nu cheia, iar în plus acceptă un ID de postare pentru a obține acea valoare, iar înainte de interogare $post->id nu este disponibil în scopul curent.

3 mar. 2011 19:40:39
Comentarii

da, asta este mai bun decât răspunsul meu (șters) - meta_query este soluția potrivită pentru interogarea mai multor chei personalizate

anu anu
3 mar. 2011 19:51:20

Minunat, bine lucrat. Îți lipsește totuși o paranteză. Ai nevoie de .. )); query_posts($args) ..

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

Există o mare oportunitate aici de a educa, folosind WP_Query, și costurile de performanță ale interogărilor meta

Tom J Nowell Tom J Nowell
17 ian. 2017 21:53:39