it-swarm.com.de

Besserer Zugriff auf benutzerdefinierte Felder im Code?

Ich habe 15 benutzerdefinierte Felder, mit denen ich Bewertungen für meine Website generiere. Derzeit greife ich auf jedes Feld wie folgt zu:

//Buy or rent, type home, price
                 if ( get_post_meta(get_the_ID(), 'survey_home_type', true) ) {
                    echo get_post_meta(get_the_ID(), 'survey_home_type', true) . " - ";
                 } 
                 if ( get_post_meta(get_the_ID(), 'survey_buy_or_rent', true) ) {
                    echo get_post_meta(get_the_ID(), 'survey_buy_or_rent', true) . " for ";
                 }
                 if ( get_post_meta(get_the_ID(), 'survey_purchase_price', true) ) {
                    echo get_post_meta(get_the_ID(), 'survey_purchase_price', true);
                 } elseif ( get_post_meta(get_the_ID(), 'survey_rent', true) ) {
                    echo get_post_meta(get_the_ID(), 'survey_rent', true);
                 } 

Gibt es einen besseren Weg, dies zu tun? Ich habe versucht, get_post_custom zu verwenden, aber es scheint sich hauptsächlich um Arrays zu handeln, nicht um einzelne Elemente. Ich könnte auch alle Variablen im Voraus deklarieren, z. B. $rent, $purchase_price. Ich würde gerne einen Rat hören!

2
caseym

Ich würde eine Funktion schreiben, um die Monotonie dieser Aufgabe zu bewältigen.

function my_print_meta($id, $key, $alternate = '')
{
    if($value = get_post_meta($id, $key, true))
        echo $value;
    else
        echo $alternate;
}

Beachten Sie in der Funktion, dass ich get_post_meta nur einmal aufrufe und den Wert in einer Variablen speichere, damit keine zwei separaten Datenbankabfragen durchgeführt werden müssen. Mit diesem Funktionssatz würde ich es dann in einer Vorlagendatei aufrufen mit:

my_print_meta(get_the_ID(), 'survey_home_type', 'No Home Type');

Stellen Sie nun fest, dass diese Funktion mit der Art und Weise, wie sie den "alternativen" Text verwaltet, möglicherweise nicht für Ihre Vorlage funktioniert. Dies ist jedoch nur eine Idee, um Sie zum Laufen zu bringen

3
tollmanz

Sie können get_post_custom () verwenden.

Es ist nicht viel anders, aber ein bisschen weniger Code.

$meta = get_post_custom( $post->ID );
if( $meta ) 
{ 
    echo $meta['survey_home_type'];
    echo $meta['survey_buy_or_rent'];
    echo $meta['survey_rent'];
}
2
Pippin