Intereting Posts

Более чистый способ доступа к пользовательским полям в коде?

У меня есть 15 пользовательских полей, которые я использую для создания отзывов для моего сайта. В настоящее время я обращаюсь к каждому полю следующим образом:

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

Есть лучший способ сделать это? Я попытался использовать get_post_custom, но, похоже, в основном работает с массивами, а не с отдельными элементами. Я мог бы также заранее объявить все переменные, например $rent , $purchase_price . Я хотел бы услышать любой совет!

Solutions Collecting From Web of "Более чистый способ доступа к пользовательским полям в коде?"

Я бы написал функцию для обработки монотонности этой задачи.

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

Обратите внимание на то, что я только вызываю get_post_meta только один раз и сохраняю значение в переменной, так что не нужно делать два отдельных запроса к базе данных. С этим набором функций я бы назвал его в файле шаблона, используя:

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

Теперь, поймите, что эта функция, с тем, что она управляет «альтернативным» текстом, может не работать для вашего шаблона, но это всего лишь идея заставить вас идти

Вы можете использовать get_post_custom ()

Это не так много, но немного меньше кода.

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