Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.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
Php 从单个CSV条目导入多个自定义字段值_Php_Excel_Wpallimport - Fatal编程技术网

Php 从单个CSV条目导入多个自定义字段值

Php 从单个CSV条目导入多个自定义字段值,php,excel,wpallimport,Php,Excel,Wpallimport,数据库中的数据以这种格式存储为数组 正确的存储方式: array ( 0 => '18459', 1 => '18462', ) 导入的格式由csv文件中的管道分隔,如so18459 | 18461,但每当我导入时,它都会存储如下值 array ( 0 => '18459|18461', ) [其他信息]这是数据库通过复制元键sp_team来存储数据的方式。如果我可以将第二个元密钥更改为其他内容,比如sp_team2,然后将其保存在我的CSV文件中,我认为这可能

数据库中的数据以这种格式存储为数组

正确的存储方式:

array (
  0 => '18459',
  1 => '18462',
)
导入的格式由csv文件中的管道分隔,如so
18459 | 18461
,但每当我导入时,它都会存储如下值

array (
  0 => '18459|18461',
)
[其他信息]这是数据库通过复制元键
sp_team
来存储数据的方式。如果我可以将第二个元密钥更改为其他内容,比如sp_team2,然后将其保存在我的CSV文件中,我认为这可能会起作用。问题是,我的导入认为应该只将两个
18459 | 18462
导入一个
sp_团队字段
,而不需要另一个
sp_团队
,事实并非如此。但我不知道怎么做

在两个字段的wp编辑器中

如果有一种方法我可以重命名第二个
sp_团队
,这样可以吗


我迫切需要一个变通办法。如您所见,它没有存储第二个值。我会感谢你的帮助。谢谢

您可以将钩子中的值分解并逐个插入

这需要进入活动主题(或子主题)的
functions.php
文件。为清晰起见,对内联进行了注释

function my_18459_update_post_meta( $post_id, $meta_key, $meta_value ) {
    $separator = '|';

    // only act on the 2 custom fields with pipes as separators:
    if($meta_key == 'sp_team' || $meta_key == 'sp_player') {

        /* Hook fires AFTER the "incorrect" unseparated meta value was 
           inserted in the DB, so need to delete it first: */
        delete_post_meta($post_id, $meta_key, $meta_value);

        // break up the values using | as separator:
        $meta_values = explode($separator, $meta_value);
        if ( ! empty( $meta_values ) ) {
            // insert values into wp_postmeta table one by one:
            foreach ( $meta_values as $meta_value ) {
                add_post_meta($post_id, $meta_key, $meta_value);
            }
        }
    }
}

add_action( 'pmxi_update_post_meta', 'my_18459_update_post_meta', 10, 3 );
我使用的相关导入设置的屏幕截图:


您还可以在注释中提供的链接处检查导入设置。

因此,在管道上分解并进行数组合并。如果使用
fgetcsv()
,则有一个参数指定分隔符是什么。“正确的存储方式:“-确切地说是什么?”?您显示的确切文本,包括单词
数组
和所有?还是别的什么?“如你所见”-我们几乎看不到任何东西…到目前为止,你的问题完全没有实际描述你是如何进行此导入的。我正在使用wpall导入插件进行导入,我的csv标题是
sp_team
。单元格中的数据采用由管道分隔的格式
18459 | 18462
。这样导入时,对于单个
sp_团队
meta键,结果是
18459 | 18462
。有两个
sp_团队
元键,对于另一个
sp_团队
元键,每个元键应具有单个值18459和18462,而对于一个
sp_团队
,元键不应为
18459 | 18462。请检查图片添加以上的职位。如果存在单独的
sp_team
并说
sp_team 2
我认为导入者会识别差异,但不会,因为它认为这只是一个重复。我在这里创建了一个沙箱,我已导出事件的a文件。注意CSV中的
sp_团队
列。你会注意到队伍被管道隔开。在不更改任何内容的情况下重新导入同一文件不会正确地重新导入。我还在网站上保留了这些活动,让大家看看这些团队是如何工作的。导入时,团队没有按照预期的方式出现,因此我想知道是否会发生这种情况,因为团队共享相同的元密钥
sp_team
。我在我的网站上尝试了这种方法,效果很好!不知道为什么它不在演示网站上。感谢您的帮助。哦,演示站点代码尚未完成-它缺少
delete\u post\u meta
部分-出于某种原因,服务拒绝更新functions.php文件。很高兴它有帮助!