你的代码毫无意义,无论如何,这里有一个很好的方法,你可以得到:
function Print_price_fileds($cnt, $p = null) {
if ($p === null){
$a = $b = $c = \'\';
}else{
$a = $p[\'n\'];
$b = $p[\'d\'];
$c = $p[\'p\'];
}
return <<<HTML
<li>
<label>Nr :</label>
<input type="text" name="price_data[$cnt][n]" size="10" value="$a"/>
<label>Description :</label>
<input type="text" name="price_data[$cnt][d]" size="50" value="$b"/>
<label>Price :</label>
<input type="text" name="price_data[$cnt][p]" size="20" value="$c"/>
<span class="remove">Remove</span>
</li>
HTML
;
}
//add custom field - price
add_action("add_meta_boxes", "object_init");
function object_init(){
add_meta_box("price_meta_id", "Price fields :","price_meta", "post", "normal", "low");
}
function price_meta(){
global $post;
$data = get_post_meta($post->ID,"price_data",true);
echo \'<div>\';
echo \'<ul id="price_items">\';
$c = 0;
if (count($data) > 0){
foreach((array)$data as $p ){
if (isset($p[\'p\']) || isset($p[\'d\'])|| isset($p[\'n\'])){
echo Print_price_fileds($c,$p);
$c = $c +1;
}
}
}
echo \'</ul>\';
?>
<span id="here"></span>
<span class="add"><?php echo __(\'Add Price Data\'); ?></span>
<script>
var $ =jQuery.noConflict();
$(document).ready(function() {
var count = <?php echo $c - 1; ?>; // substract 1 from $c
$(".add").click(function() {
count = count + 1;
//$(\'#price_items\').append(\'<li><label>Nr :</label><input type="text" name="price_data[\' + count + \'][n]" size="10" value=""/><label>Description :</label><input type="text" name="price_data[\' + count + \'][d]" size="50" value=""/><label>Price :</label><input type="text" name="price_data[\' + count + \'][p]" size="20" value=""/><span class="remove">Remove</span></li>\');
$(\'#price_items\').append(\'<? echo implode(\'\',explode("\\n",Print_price_fileds(\'count\'))); ?>\'.replace(/count/g, count));
return false;
});
$(".remove").live(\'click\', function() {
$(this).parent().remove();
});
});
</script>
<style>#price_items {list-style: none;}</style>
<?php
echo \'</div>\';
}
//Save product price
add_action(\'save_post\', \'save_detailss\');
function save_detailss($post_id){
global $post;
// to prevent metadata or custom fields from disappearing...
if ( defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE )
return $post_id;
// OK, we\'re authenticated: we need to find and save the data
if (isset($_POST[\'price_data\'])){
$data = $_POST[\'price_data\'];
update_post_meta($post_id,\'price_data\',$data);
}else{
delete_post_meta($post_id,\'price_data\');
}
}
我不断有人问我如何将数据打印到fronend中,因此:
$data = get_post_meta($post->ID,"price_data",true);
echo \'<ul>\';
if (count($data) > 0){
foreach((array)$data as $p ){
if (isset($p[\'p\']) || isset($p[\'d\'])|| isset($p[\'n\'])){
echo \'<li>Number: \'.$p[\'n\'].\' Description: \'.$p[\'d\'].\' Price: \'.$p[\'p\'].\'</li>\';
}
}
}
echo \'</ul>\';