2014-01-09 58 views

回答

3

這是回答如何保存多維數組的價值觀和一些如何在一定程度上

你應該使用數組解決您的問題。

我在我的腳本的許多實現中這樣做。讓我們看看如何:

HTML/PHP首先:

<?php 
    $countries = get_post_meta($post->ID, 'countries' true); 
?> 
<div class="EntriesContainer" data-count="<?php echo count($countries); ?>" id="itemsList"> 
    <?php 
     $cnt = 0; 

     foreach($countries as $country) 
     { 
      ++$cnt; 
    ?> 
    <div class="newItem"> 
     <input name="countries[<?php echo $cnt; ?>][name]" type="text" />' + 
     <input name="countries[<?php echo $cnt; ?>][population]" type="text" /> 
     <input name="countries[<?php echo $cnt; ?>][flag_url]" type="text" /> 
    </div> 
    <?php 
     } 
    ?> 
</div> 
<input type="button value="Add new Country" class="button" id="addNewItem" /> 

的JavaScript:

jQuery(document).ready(
    function($) 
    { 
     $('#addNewItem').on(
      'click.myThemeOrPluginName', 
      function(e) 
      { 
       e.preventDefault(); 

       var ttlItems = parseInt($('#itemsList').attr('data-count')); 
       ++ttlItems; 

       var $newItem = '<div class="newItem>' + 
           '<input name="countries[' + ttlItems + '][name]" type="text" />' + 
           '<input name="countries[' + ttlItems + '][population]" type="text" />' + 
           '<input name="countries[' + ttlItems + '][flag_url]" type="text" />' + 
           '</div>'; 

       $('#itemsList').append($newItem); 
      } 
     ); 
    } 
); 

然後在save_post行動掛鉤函數,你將通過$_POST得到一個數組,將看像這樣:

array(
    'countries' => array(
     [1] => array(
      name => 'Greece' 
      population => '11000000', 
      flag_url => '../el_GR.png' 
     ) 
     [2] => array(
      name => 'Italy' 
      population => '????', 
      flag_url => '../it_IT.png' 
     ) 
    ) 
) 

這是一般的想法。根據您的要求定製:)

2

你應該考慮自定義文章類型(http://codex.wordpress.org/Post_Types)。

在這種情況下,你可以創建一個新的類型:國家,包含文章標題(國家名稱),你可以添加2自定義字段:人口(文本字段),和標誌(像場)。

然後,您可以根據需要添加儘可能多的國家,就像帖子一樣。

+0

這也是一個很好的做法! –

+0

非常好的建議!謝謝 –

相關問題