我正在创建一个导入脚本,用于从客户端提供的Excel电子表格迁移数据,并将每一行转换为WordPress帖子。到目前为止,我已经创建了帖子并且正确填写了所有自定义字段...除了一个。
其中一个字段是关联部件。我想在此字段中使用Post Object,但我似乎无法找到有关格式化的任何文档,以便通过我的PHP脚本将post对象(或最好是多个对象)分配给该字段的值。
以下是我用来填充“规范”转发器字段的一些代码的示例,该字段包含两个子字段,标签和值。
$field_key = 'field_53ef95cead820';
$value = get_field($field_key, $postID);
foreach($specs as $spec):
$specArray = explode(':',$spec);
if($specArray[0] && $specArray[1]):
$value[] = array("label" => $specArray[0], "value" => $specArray[1]);
endif;
++$i;
endforeach;
update_field( $field_key, $value, $postID );
要修改关联的部分字段,我应该将其设置为这样的转发器,然后创建某种数组来填充它,或者我应该使用多选选项并仍然传递某种类型的数组。我很乐意去任何一条路线,我只需要一些方法来获得那些领域。
答案 0 :(得分:2)
在初始导入期间添加关联产品(其他帖子)是不可能的,因为当您将第一个产品导入WordPress时,它的关联部分尚未创建。出于这个原因,我必须将两个电子表格导入到WordPress中。
在第一次导入时,它创建了所有帖子,并添加了电子表格中显示的所有非关系自定义字段。我设置脚本以表格格式打印导入产品的帖子ID,这样我就可以轻松地将所有ID从脚本输出中复制并粘贴回电子表格中的“产品ID”字段。该脚本检查是否存在产品ID,该字段将决定是创建新的帖子/产品还是更新现有的帖子/产品。
导入所有产品并将其尊重ID添加到电子表格后,我们开始第二次导入。我们使用完全相同的电子表格,唯一的区别是现在它已将WordPress ID添加到列中。
1. if($product['Associated Parts']):
2. $assParts = explode('|',$product['Associated Parts']);
3. unset($assIDs);
4. foreach($assParts as $assPart):
5. unset($assID);
6. if($assPart):
7. $assID = get_page_by_title( $assPart , 'OBJECT' , 'product' );
8. $assIDs[] = $assID->ID;
9. endif;
10. endforeach;
11. $assIDs = array_filter($assIDs);
12. update_field( 'field_542c5dc44272e' , $assIDs , $product['Page ID'] );
13. endif;
逐行细分代码:
我不得不猜测我需要用于字段值的格式。起初,我尝试传递一组Post Objects,但是没有用。在WordPress帖子编辑器中,我检查了代码并看到他们的输入字段的值(当选择另一个帖子时)是帖子ID。切换到包含帖子ID的数字数组后,update_field()函数完全接受它们而不会发生意外。
我们已经完成了。