Wordpress重复Meta Glitch

时间:2017-01-28 19:49:30

标签: javascript php wordpress

我在我创建的重复元插件上遇到了一个奇怪的问题。一切正常(保存到数据库,撤消数据,添加元部分,删除元部分)除了我将详细解释的一件事。以下是需要考虑的因素:

  • 我有3个保存的元部分,每个部分保存了三个数据字段
  • 在WordPress中保存页面时,删除第一个或第二个部分将删除所有三个部分中的所有数据(错误)
  • 删除第三部分然后保存WordPress页面只会删除第三部分,前两部分仍然保存(好)
  • 删除第二部分,然后创建新部分,然后保存在WordPress中将删除所有部分(第1,2,3节)除了删除第二部分后添加的部分(第4部分)。

这是我运行删除的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>

0 个答案:

没有答案