2011-05-02 34 views
2

我有一個爲產品製作的自定義帖子類型。這將有10種自定義字段類型,像這樣:將元框中的自定義字段組合在一起以在網格中顯示爲行?

DocName1
DocUrl1

DocName2
DocUrl2

...等等。下面是對自定義字段自定義後類型元boxe代碼:

//* Add custom Meta Boxes for Products *// 

$prefix = 'aps_'; //To prevent conflicts with other plugins 

$meta_box = array(
    'id' => 'products-meta-boxes', 
    'title' => "Product Details", 
    'page' => 'tf_products', //attach to products custom post 
    'context' => 'normal', 
    'priority' => 'high', 
    'fields' => array(
     array(
      'name' => 'Document Name 1', 
      'desc' => 'Name of PDF or Document you want to share', 
      'id' => $prefix . 'docname1', 
      'type' => 'text', 
      'std' => '' 
     ), 
     array(
      'name' => 'Document URL 1', 
      'desc' => 'Web Address to PDF or document you want to share', 
      'id' => $prefix . 'docurl1', 
      'type' => 'text', 
      'std' => 'http://' 
     ), 
     array(
      'name' => 'Document Name 2', 
      'desc' => 'Name of PDF or Document you want to share', 
      'id' => $prefix . 'docname2', 
      'type' => 'text', 
      'std' => '' 
     ), 
     array(
      'name' => 'Document URL 2', 
      'desc' => 'Web Address to PDF or document you want to share', 
      'id' => $prefix . 'docurl2', 
      'type' => 'text', 
      'std' => 'http://' 
     )  
    ) 
); 

我想他們組合在一起就像DocName1 - DocUrl1,使他們能夠在網格上的文本框的一行中回顯出來。我在我的自定義文章類型添加/編輯表單上準備了一個網格,我想將文本框放入,以便可以添加或編輯它們。這裏http://i.stack.imgur.com/ZGqGI.png

截圖,我可以輕鬆地做一個foreach ($meta_box['fields'] as $field),並呼應了爲每一個文本框,但這是每個字段,而不是一組(如DocName1和DocUrl1),但我想在同一網格線DocName1 - DocUrl1。有沒有辦法做到這一點?我無法圍繞一個有效的方式來做到這一點。

我現在做它的方式是像這樣:

foreach ($meta_box['fields'] as $field) { 
    // get current post meta data 
    $meta = get_post_meta($post->ID, $field['id'], true); 
    echo '<tr>', 
      '<th style="width:20%"><label for="', $field['id'], '">', $field['name'], '</label></th>', 
       '<td>'; 
    echo '<input type="text" name="', $field['id'], '" id="', $field['id'], '" value="', $meta ? $meta : $field['std'], '" size="30"     style="width:97%" />', '<br />', $field['desc']; 
    echo '</td>', 
     '</tr>'; 
} 

但當然這呼應的出自身線上的每個領域。我想要在第一個網格線上有DocName1和DocUrl1的網格,然後是第二個網格上的DocName2和DocUrl2,依此類推。

對不起,如果這是混亂。

回答

0

我想我自己回答了這個問題!

我在秀元框函數創建一個for循環,像這樣:

//Show Meta Fields 
function products_show_meta() { 
global $meta_box, $post, $prefix; 

// Use nonce for verification 
echo '<input type="hidden" name="products_meta_box_nonce" value="', wp_create_nonce(basename(__FILE__)), '" />'; 

echo '<table class="widefat">', 
     '<thead>', 
      '<tr>', 
       '<th style="width:30%">Document Name</th>', 
       '<th>Document URL</th>', 
      '</tr>', 
     '<thead>', 
     '<tfoot>', 
      '<tr>', 
       '<th>Document Name</th>', 
       '<th>Document URL</th>', 
      '</tr>', 
     '<tfoot>'; 

echo '<tbody>'; 

    for ($i=1; $i <= count($meta_box["fields"])/2; $i++) { 
     $current_docName = $prefix . 'docname' . $i; 
     $current_docUrl = $prefix . 'docurl' . $i; 
     $meta_docName = get_post_meta($post->ID, $current_docName, true); 
     $meta_docUrl = get_post_meta($post->ID, $current_docUrl, true); 

     echo '<tr>', 
       '<td>', 
        '<input type="text" name="', $current_docName, '" id="', $current_docName, '" value="', $meta_DocName ? $meta_DocName       : '', '" size="30" style="width:99%" />', 
       '</td>', 
       '<td>', 
        '<input type="text" name="', $current_docUrl, '" id="', $current_docUrl, '" value="', $meta_DocUrl ? $meta_DocUrl :        'http://', '" size="30" style="width:99%" />', 
       '</td>', 
      '</tr>';    
    } 

echo '</tbody>', 
    '</table>'; 

首先,我回聲出表的頁眉和頁腳,給每個列相應的名稱。然後我運行一個從1開始的for循環,並計算我擁有的字段數(我必須將其除以2,否則會將行數加倍)。然後,我只抓住每個領域,並回應出行。這是以下代碼呈現的內容:http://i.stack.imgur.com/NPu66.png它正在工作並完美保存數據!

相關問題