2017-07-17 41 views
0

更新:每當我想在wordpress中檢索特定的數據列表時,是否需要運行循環?

我能夠在頁面的最頂部運行循環,但只要我退出循環(endwhile;)我無法放置我的數據數組。只要我關閉循環,我的數據就不能放在任何地方。

所以我們可以說,我會嘗試:

<?php /* Template Name: memberplatform */ ?> 
<?php $current = $_SERVER["REQUEST_URI"]; ?> 
<?php get_header(); ?> 
<?php $temp_query = $wp_query; 
query_posts("cat=2&showposts=20"); 
while (have_posts()) : the_post(); 
$membername = get_post_meta($post->ID, 'name', true); 
$memberemail = get_post_meta($post->ID, 'email', true); 
$members = []; 
if (! empty($membername)) { 
    $members[] = '<option value="' . $memberemail . '">' . get_post_meta($post->ID, 'name', true) .'</option>'; 
    echo implode($members); 

} 
endwhile; 
?> 

,然後在表格我嘗試呼應我的數組這樣的:

<select class="drops" name="smallsan"> 
    <?php echo implode($members); ?> 
</select> 

我可以在循環中獲得我的數組,所以首先,但我無法用我的結果填充我的下拉菜單。

原來的問題:

我需要檢索的誰我已經在WordPress給出的自定義字段,例如人的名單功能,他們的電子郵件或他們的公司名稱,以在選項標籤中顯示它們表單中的選擇下拉列表。

到目前爲止好,但因爲我需要顯示兩個不同的領域(從一個人到另一個人),我不得不運行在這樣兩種不同的循環:

<form role="form" class="contactForm contact-form form-horizontal"> 
    <div class="form-group"> 
     <div class="controls"> 
      <label class="col-sm-2 control-label"> Your Name (required)</label> 
      <div class="col-sm-10"> 
       <select class="drops" name="smallsan"> 
        <?php $temp_query = $wp_query; ?> 
        <?php query_posts("cat=2&showposts=20"); ?> 
        <?php while (have_posts()) : the_post(); ?> 
         <?php 
         $membername = get_post_meta($post->ID, 'name', true); 
         $memberemail = get_post_meta($post->ID, 'email', true); 
         if (! empty($membername)) { 
          echo '<option value="' . $memberemail . '">' . get_post_meta($post->ID, 'name', true) .'</option>'; 
         } 
         ?> 
         <?php 

         endwhile; 
         ?> 
        </select> 
        <div class="help-block with-errors"></div> 
       </div> 
      </div> 
      <div class="controls"> 
       <label class="col-sm-2 control-label">Referring to</label> 
       <div class="col-sm-10"> 

        <select class="drops" name="smallsan"> 
         <?php $temp_query = $wp_query; ?> 
         <?php query_posts("cat=2&showposts=20"); ?> 
         <?php while (have_posts()) : the_post(); ?> 
          <?php 
          $membername = get_post_meta($post->ID, 'name', true); 
          $memberemail = get_post_meta($post->ID, 'email', true); 
          if (! empty($membername)) { 
           echo '<option value="' . $memberemail . '">' . get_post_meta($post->ID, 'name', true) .'</option>'; 
          } 
          ?> 
          ?> 
          <?php 

          endwhile; 
          ?> 
         </select> 
        </div> 
       </div> 

等。

我試圖運行循環只在最頂部喂兩個部分,但它沒有工作,因爲這樣我就能夠檢索一個值(不是所有的成員與他們的電子郵件):

<form role="form" class="contactForm contact-form form-horizontal"> 
    <?php $temp_query = $wp_query; ?> 
    <?php query_posts("cat=2&showposts=20"); ?> 
    <?php while (have_posts()) : the_post(); ?> 
     <select class="drops" name="smallsan"> 
      <?php 
      $membername = get_post_meta($post->ID, 'name', true); 
      $memberemail = get_post_meta($post->ID, 'email', true); 
      if (! empty($membername)) { 
       echo '<option value="' . $memberemail . '">' . get_post_meta($post->ID, 'name', true) .'</option>'; 
      } 
      ?> 
      <?php 

      endwhile; 
      ?> 
     </select> 
     <div class="help-block with-errors"></div> 
    </div> 
</div> 
<div class="controls"> 
    <label class="col-sm-2 control-label">Referring to</label> 
    <div class="col-sm-10"> 

     <select class="drops" name="smallsan"> 

       <?php 
       $membername = get_post_meta($post->ID, 'name', true); 
       $memberemail = get_post_meta($post->ID, 'email', true); 
       if (! empty($membername)) { 
        echo '<option value="' . $memberemail . '">' . get_post_meta($post->ID, 'name', true) .'</option>'; 
       } 
       ?> 
       ?> 
       <?php 

       endwhile; 
       ?> 
      </select> 
     </div> 
    </div> 

是不是?有沒有其他方法可以避免複製(DRY)循環,並使進程停滯並且代碼更清潔?

回答

1

你不需要兩個循環。在第一步中,您可以在帖子上循環一次,獲取自定義字段並將它們格式化爲HTML選項。在第二步中,你可以多次打印你的數組。

在這裏,我提供了一些示例代碼:

<?php query_posts("cat=2&showposts=20"); 
$members = []; 
while (have_posts()) 
{ 
    the_post(); 
    $membername = get_post_meta($post->ID, 'name', true); 
    $memberemail = get_post_meta($post->ID, 'email', true); 


    if (! empty($membername)) { 
     $members[] = '<option value="' . $memberemail . '">' . get_post_meta($post->ID, 'name', true) .'</option>'; 
    } 
} 

?> 

<form role="form" class="contactForm contact-form form-horizontal"> 
    <div class="form-group"> 
     <div class="controls"> 
      <label class="col-sm-2 control-label"> Your Name (required)</label> 
      <div class="col-sm-10"> 
       <select class="drops" name="smallsan"> 
        <?php echo implode($members); ?> 
       </select> 
       <div class="help-block with-errors"></div> 
       </div> 
      </div> 
     </div> 
     <div class="controls"> 
      <label class="col-sm-2 control-label">Referring to</label> 
      <div class="col-sm-10"> 

       <select class="drops" name="smallsan"> 
        <?php echo implode($members); ?> 
       </select> 
      </div> 
     </div> 
    </div> 
</form> 
+0

我試圖用你的代碼,但它不工作,當我關閉循環,將打印結果只有一個,所以我試圖結束它在代碼的最後,但仍然不起作用 – Matto

+0

嘗試var_dump($ members)。 –

+0

我該在哪裏或如何放置代碼? – Matto

相關問題