Khi sử dụng plugin WordPress Advanced Custom Fields, bạn có thể cần chuyển đổi giữa các trường tùy chỉnh đã đăng ký bởi PHP và các trường đã đăng ký JSON.
Trong plugin ACF, nó cho phép chúng ta đăng ký các trường bằng PHP. Chỉ cần sao chép và dán mã sau vào tệp functions.php
của theme hoặc đưa nó vào tệp bất kỳ rồi include
vào.
Custom Fields -> Tools -> Select Field Groups -> Generate PHP
Ưu điểm của cách này đó là tránh mất fields trong trường hợp không đáng có hoặc tránh việc người dùng xoá sửa các fields làm sai sót dữ liệu.
Nhưng ngược lại, nó cũng có nhược điểm. Khi chúng ta generate ra PHP sau đó xoá luôn options, thì chúng ta không thể chỉnh sửa, thêm xoá sửa các fields trong trường hợp cần thay đổi logic code.
Vì vậy đoạn code sau giúp bạn convert ngược PHP sang định dạng JSON có thể import, giúp bạn có thể chỉnh sửa các fields mong muốn.
<?php
$groups = acf_get_local_field_groups();
$json = [];
foreach ($groups as $group) {
// Fetch the fields for the given group key
$fields = acf_get_local_fields($group['key']);
// Remove unecessary key value pair with key "ID"
unset($group['ID']);
// Add the fields as an array to the group
$group['fields'] = $fields;
// Add this group to the main array
$json[] = $group;
}
$json = json_encode($json, JSON_PRETTY_PRINT);
// Optional - echo the JSON data to the page
echo "<pre>";
echo $json;
echo "</pre>";
// Write output to file for easy import into ACF.
// The file must be writable by the server process. In this case, the file is located in
// the current theme directory.
$file = get_template_directory() . '/acf-import.json';
file_put_contents($file, $json );
?>
Sau khi chạy đoạn code trên, bạn mở folder theme sẽ thấy 1 file acf-import.json
. Bạn có thể dùng file này import bình thường như các file json của plugin ACF.
Chúc các bạn thành công!