Отображение пользовательских полей на родительской странице

У меня есть много подстраниц, у каждой из которых есть определенные поля.

Я использую 2 плагина, eMembers для уровней членства и типы для моих настраиваемых полей.

Я пытаюсь показать пользовательскую информацию поля на родительской странице. У меня хороший код. Но потом я попытался снова включить одни и те же данные, но покажу только те, у которых установлен флажок. У меня это тоже работает.

Но моя проблема в том, что я пытаюсь запустить оба сценария одновременно. Я получаю только первые результаты скрипта.

мой код: http://pastebin.com/vgeZwPxM

<!-- ///// START USER LOGGED IN ///// --> <?php if(wp_emember_is_member_logged_in()) { ?> <!-- ///// START USER LOGGED IN - LEVEL PAID ///// --> <?php if(wp_emember_is_member_logged_in(2)) { ?> <h3 class="grey">Top 3 In <?php wp_title(''); ?></h3> <?php // Get the page's children $top3 = get_pages('child_of='.$post->ID.'&sort_column=menu_order&parent='.$post->ID); if (!empty($top3)) { //check if there are any children pages. //If there are.... global $post; foreach($top3 as $post) { $url = get_permalink($child->ID); $title = get_the_title($child->ID); $topThreeInArea = types_render_field("top-3-in-area", array("raw"=>"true","separator"=>";")); $address = types_render_field("address", array("raw"=>"true","separator"=>";")); if ( !empty( $topThreeInArea ) ) { echo "<div class='col_3'>"; echo "<h3><a href='".$url."'>".$title."</a></h3>"; //If Address if ( !empty( $address ) ) { echo "<p><i class='icon-pin'></i>"; echo "<span>".$address."</span></p>"; } echo "<span>".$facilities."</span></p>"; } echo "<a href='".$url."' class='button green'>Visit Website</a>&nbsp;&nbsp;&nbsp;&nbsp;"; echo "</div>"; } } } ?> <div class='clear'></div> <?php } ?> <!-- ///// END USER LOGGED IN - LEVEL PAID ///// --> <div id="county-nav" class="listNav"></div> <ul class="county " id="county"> <?php // Get the page's children $children = get_pages('child_of='.$post->ID.'&sort_column=menu_order&parent='.$post->ID); if (!empty($children)) { //check if there are any children pages. //If there are.... global $post; foreach($children as $post) { $url = get_permalink($child->ID); $title = get_the_title($child->ID); $address = types_render_field("address", array("raw"=>"true","separator"=>";")); echo "<li class=''>"; echo "<h3><a href='".$url."'>".$title."</a></h3>"; echo "<div class='col_2'>"; //If Address if ( !empty( $address ) ) { echo "<p><i class='icon-pin'></i>"; echo "<span>".$address."</span></p>"; } echo "</div>"; echo "<div class='clear'></div>"; echo "<a href='".$url."' class='button green'>Visit Website</a>&nbsp;&nbsp;&nbsp;&nbsp;"; echo "</li>"; } } ?> </ul> <?php } ?> <!-- ///// END USER LOGGED IN ///// --> 

Cheers Jord

Solutions Collecting From Web of "Отображение пользовательских полей на родительской странице"

У меня была такая же проблема, и я нашел три способа ее решения. Типы действительно трудно убедить читать данные из другой должности, чем текущая в цикле …

Это первое решение, просто создайте цикл с использованием query_posts () и получите данные там через types_render_field() как обычно. Не забудьте повторно выполнить запрос, если вы делаете это до своего фактического цикла; но я думаю, вы знаете об этом. http://codex.wordpress.org/Function_Reference/wp_reset_query Внутри основного цикла это, вероятно, почти невозможно, я думаю.

Второе решение – iirc – использовать setup_postdata ($ post) в foreach-loop. Это делает некоторую магию, которая, наконец, указывает types_render_field() в types_render_field() вам сообщение. Опять же, это беспорядок со всеми функциями, такими как the_ID() или the_content() и т. Д., Поэтому вы можете сохранить старую global $post переменной tmp и повторно установить ее обратно через setup_postdata($tmp) .

В качестве последнего средства, которое иногда является наименее сложным, вы можете просто прочитать данные вручную, используя get_post_meta () . Чтобы найти имя поля, лучше посмотреть прямо в таблицу wp_postmeta . Я нашел пару руководств для соглашения об именах полей в базе данных, но после некоторых проб и ошибок я всегда заканчивал запуск Adminer, чтобы посмотреть на БД.

Итак, выбирайте разумно 🙂