Sauberere Möglichkeit, auf benutzerdefinierte Felder im Code zuzugreifen?

Ich habe 15 benutzerdefinierte Felder, mit denen ich Bewertungen für meine Website generieren kann. 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 mit get_post_custom, aber es scheint hauptsächlich mit Arrays, nicht einzelne Elemente zu tun. Ich könnte auch alle Variablen im Voraus deklarieren, wie zum Beispiel $rent , $purchase_price . Ich würde gerne einen Rat hören!

Solutions Collecting From Web of "Sauberere Möglichkeit, auf benutzerdefinierte Felder im Code zuzugreifen?"

Ich würde eine function schreiben, um die Monotonie dieser Aufgabe zu behandeln.

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

Beachten Sie in der function, dass ich get_post_meta einmal get_post_meta und den Wert in einer Variablen abspeichern, damit keine zwei separaten databaseabfragen gemacht werden müssen. Mit diesem functionssatz würde ich ihn dann in einer Vorlagendatei aufrufen mit:

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

Nun stellen Sie fest, dass diese function mit der Art, wie sie den “alternativen” Text verwaltet, für Ihre Vorlage möglicherweise nicht funktioniert, aber dies ist nur eine Idee, um Sie in Gang zu bringen

Sie könnten 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']; }