Если ваш сайт использует Meta Box для пользовательских полей, Field Forge может покрыть ручной/бета путь миграции. Meta Box хранит многие значения в wp_postmeta, используя стандартные пары meta_key/meta_value, но метаданные расширений, группы, определенные строителем, правила местоположения и пользовательские обратные вызовы должны быть проверены для каждого сайта перед тем, как заявить о полной миграции в один клик.
Обнаружение
php
// Check for Meta Box data in postmeta
global $wpdb;
$meta_box_groups = $wpdb->get_results(
"SELECT DISTINCT meta_key FROM {$wpdb->postmeta}
WHERE meta_key NOT LIKE '\_%'
AND meta_key NOT LIKE 'field\_%'
ORDER BY meta_key"
);Стратегия миграции
- Создайте соответствующие группы полей в Field Forge с теми же именами полей.
- Мигрируйте значения из
wp_postmetaв таблицу значений Field Forge. - Тестируйте шаблоны — поскольку Field Forge поддерживает
get_field(), обновите любые вызовыrwmb_meta().
php
// Batch migrate Meta Box values to Field Forge
function migrate_meta_box_to_fieldforge( $post_type, $field_names ) {
$posts = get_posts( [ 'post_type' => $post_type, 'numberposts' => -1, 'fields' => 'ids' ] );
foreach ( $posts as $post_id ) {
foreach ( $field_names as $name ) {
$value = get_post_meta( $post_id, $name, true );
if ( '' !== $value && null !== $value ) {
update_field( $name, $value, $post_id );
}
}
}
}
// Usage
migrate_meta_box_to_fieldforge( 'product', [ 'price', 'sku', 'description', 'gallery' ] );Обновления шаблонов
Замените вызовы функций Meta Box на эквиваленты Field Forge:
php
// Before (Meta Box)
$value = rwmb_meta( 'price' );
$images = rwmb_meta( 'gallery', [ 'size' => 'large' ] );
// After (Field Forge)
$value = get_field( 'price' );
$images = get_field( 'gallery' ); // Returns array based on return_format—