¿Una forma más limpia de acceder a los campos personalizados en el código?

2

Tengo 15 campos personalizados que uso para generar revisiones para mi sitio. Actualmente accedo a cada campo como este:

//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);
                 } 

¿Hay una mejor manera de hacer esto? Intenté usar get_post_custom pero parece que se trata principalmente de arreglos, no de elementos individuales. También podría declarar todas las variables antes de tiempo, como $rent , $purchase_price . Me gustaría escuchar cualquier consejo!

    
pregunta caseym 11.07.2011 - 00:04

2 respuestas

3

Escribiría una función para manejar la monotonía de esta tarea.

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

Observe en la función que solo invoco get_post_meta una vez y almaceno el valor en una variable para que no sea necesario realizar dos consultas de base de datos separadas. Con este conjunto de funciones, lo llamaría en un archivo de plantilla usando:

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

Ahora, tenga en cuenta que esta función, con la forma en que administra el texto "alternativo" puede no funcionar para su plantilla, pero esto es solo una idea para que pueda comenzar     

respondido por el tollmanz 11.07.2011 - 01:57
2

Puede usar get_post_custom ()

No es muy diferente, pero un poco menos de código.

$meta = get_post_custom( $post->ID );
if( $meta ) 
{ 
    echo $meta['survey_home_type'];
    echo $meta['survey_buy_or_rent'];
    echo $meta['survey_rent'];
}
    
respondido por el Pippin 11.07.2011 - 01:10

Lea otras preguntas en las etiquetas