我在我创建的重复元插件上遇到了一个奇怪的问题。一切正常(保存到数据库,撤消数据,添加元部分,删除元部分)除了我将详细解释的一件事。以下是需要考虑的因素:
这是我运行删除的JS代码:
jQuery(document).on('click','.removeMeta',function(){
jQuery(this).parent().parent().remove();
var index = metaBoxes.indexOf(parseInt(jQuery(this).attr('slideId')));
if (index > -1) {
metaBoxes.splice(index, 1);
}
jQuery('#metaBoxArray').val(metaBoxes.join());
sortRepMeta();
});
function sortRepMeta() {
jQuery('.meta-box-text').text(function(i, oldVal) {
return "Meta Section "+(i+1);
});
}
以下是重复元部分的PHP保存功能片段:
if( $_POST ) {
$data = array();
$full_meta_array = array();
foreach (explode(',', $_POST['metaBoxArray']) as $key => $i) {
$meta_box = array();
if(empty($_POST['repTextArea'][$i])){
$full_meta_array = array();
}else{
$meta_box['repTextArea'] = $_POST['repTextArea'][$i];
$meta_box['repTextField'] = $_POST['repTextField'][$i];
$meta_box['image'] = $_POST['image'][$i];
$full_meta_array[] = $meta_box;
}
}
$data = $full_meta_array;
// var_dump($data);
// Update the meta field in the database.
update_post_meta( $post_id, 'repMetaArray', $data );
上面的代码有什么问题吗?我不知道在哪里解决这个问题。我认为JS会清空删除元数据部分中的数据,但是当我在存储所有元部分信息的数组上运行var_dump时,它表示仍然填充了所有字段。如果还有其他需要提供的信息,请告诉我。
编辑:循环开始回显生成元框的代码:
$rep_meta_array = get_post_meta($post->ID, 'repMetaArray', true );
foreach ($rep_meta_array as $key => $meta_box) {
$jsMeta[] = $meta_box_count = $key;
定义了metaBoxes和metaCount:
<script type="text/javascript">
var metaCount = <?php echo count($rep_meta_array) + 1; ?>;
var metaBoxes = [<?php if(!empty($jsMeta)){echo implode(',',$jsMeta);}?>];
jQuery('#metaBoxArray').val(metaBoxes.join());
</script>