Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Wordpress重复元故障_Javascript_Php_Wordpress - Fatal编程技术网

Javascript Wordpress重复元故障

Javascript Wordpress重复元故障,javascript,php,wordpress,Javascript,Php,Wordpress,我在我创建的重复元插件上遇到了一个奇怪的问题。除了一件我将详细解释的事情外,一切都很好(保存到数据库、重新处理数据、添加元节、删除元节)。以下是需要考虑的事项: 我有3个保存的元节,每个节中保存了三个数据字段 在WordPress中保存页面时,删除第一节或第二节将删除所有三节中的所有数据(错误) 删除第三部分然后保存WordPress页面只会删除第三部分,前两部分仍然保存(良好) 删除第二节,然后创建一个新节,然后保存在WordPress中,将删除除删除第二节(第4节)后添加的节以外的所有节(

我在我创建的重复元插件上遇到了一个奇怪的问题。除了一件我将详细解释的事情外,一切都很好(保存到数据库、重新处理数据、添加元节、删除元节)。以下是需要考虑的事项:

  • 我有3个保存的元节,每个节中保存了三个数据字段
  • 在WordPress中保存页面时,删除第一节或第二节将删除所有三节中的所有数据(错误)
  • 删除第三部分然后保存WordPress页面只会删除第三部分,前两部分仍然保存(良好)
  • 删除第二节,然后创建一个新节,然后保存在WordPress中,将删除除删除第二节(第4节)后添加的节以外的所有节(第1、2、3节)
以下是我运行删除的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 save函数片段:

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_转储时,它表示所有字段仍然填充。如果需要提供任何其他信息,请告诉我

编辑:循环开始回显生成元框的代码的位置:

$rep_meta_array = get_post_meta($post->ID, 'repMetaArray', true );   

foreach ($rep_meta_array as $key => $meta_box) {
    $jsMeta[] = $meta_box_count = $key;
其中定义了元盒和元计数:

    <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>

var元计数=;
变量元盒=[];
jQuery('#metaBoxArray').val(metaBoxes.join());

什么是
元数据库
,它在哪里定义?可能会显示更多代码和/或标记。我添加了一个编辑,显示定义metaBoxes和metaCount的代码。首先,您正在使用
metaBoxes.join()构建
metaBoxArray
,并使用
explode(',',$\u POST['metaBoxArray')将其转换回数组。
,所以可能只是因为它在意外的位置拆分了文本。在
join()
explode()
中使用相同的分隔符,并使用字符串中其他任何地方都找不到的字符(如
`
)和/或在加入它们之前验证没有元素具有该分隔符。