将序列化数据转换为 WP 自定义字段

问题描述 投票:0回答:1

我已从我的网站导出数据,并打算将其导入新的模板和帖子类型。 我的问题是上一个模板的自定义字段之一以 PHP 序列化形式存储在数据库中。如何将其四个字段转换为我使用 ACF 创建的新自定义字段?

我已经测试了 WP All Import 插件和 Serialize Fields 选项,但它不起作用。

以下是序列化数据的示例,我打算从中提取地址、电话号码以及纬度和经度。

a:11:{s:7:"address";s:41:"باهنر - نبش كوجه شيرازي";s:11:"gpsLatitude";s:9:"35.805457";s:12:"gpsLongitude";s:8:"51.43616";s:18:"streetViewLatitude";s:0:";s:19:"streetViewLongitude";s:0:";s:17:"streetViewHeading";s:1:"0";s:15:"streetViewPitch";s:1:"0";s:14:"streetViewZoom";s:1:"0";s:9:"telephone";s:0:";s:5:"email";s:0:";s:3:"web";s:0:";}

php wordpress advanced-custom-fields
1个回答
0
投票

试试这个代码

<?php
// Serialized data from your example
$serialized_data = 'a:11:{s:7:"address";s:41:"باهنر - نبش كوجه شيرازي";s:11:"gpsLatitude";s:9:"35.805457";s:12:"gpsLongitude";s:8:"51.43616";s:18:"streetViewLatitude";s:0:";s:19:"streetViewLongitude";s:0:";s:17:"streetViewHeading";s:1:"0";s:15:"streetViewPitch";s:1:"0";s:14:"streetViewZoom";s:1:"0";s:9:"telephone";s:0:";s:5:"email";s:0:";s:3:"web";s:0:";}';

// Unserialize the data
$unserialized_data = unserialize($serialized_data);

// Retrieve specific fields
$address = isset($unserialized_data['address']) ? $unserialized_data['address'] : '';
$latitude = isset($unserialized_data['gpsLatitude']) ? $unserialized_data['gpsLatitude'] : '';
$longitude = isset($unserialized_data['gpsLongitude']) ? $unserialized_data['gpsLongitude'] : '';
$telephone = isset($unserialized_data['telephone']) ? $unserialized_data['telephone'] : '';

// Assuming you have created custom fields using ACF with field keys like 'address_field', 'latitude_field', 'longitude_field', 'telephone_field'

// Update post meta with ACF
// Make sure to replace '123' with the post ID where you want to save the data
update_field('address_field', $address, 123);
update_field('latitude_field', $latitude, 123);
update_field('longitude_field', $longitude, 123);
update_field('telephone_field', $telephone, 123);
?>
© www.soinside.com 2019 - 2024. All rights reserved.