Импортировать несколько значений настраиваемых полей из одной записи CSV - PullRequest
0 голосов
/ 17 июня 2020

Мои данные в базе данных хранятся в этом формате как массив.

Правильный способ хранения:

array (
  0 => '18459',
  1 => '18462',
)

Формат для импорта разделен вертикальной чертой в моем csv файл, подобный этому 18459|18461, но всякий раз, когда я импортирую, он вместо этого сохраняет такие значения.

array (
  0 => '18459|18461',
)

[Дополнительная информация] Вот как база данных хранит данные, дублируя мета-ключ sp_team. Если я могу изменить второй мета-ключ на что-то еще, скажем, sp_team2, тогда поместите это в свой файл CSV, я думаю, это может сработать. Проблема в том, что мой import думает, что он должен просто импортировать оба 18459|18462 только в один sp_team field, а другой sp_team не нужен, что не так. Но я не знаю как.

enter image description here

Внутри wp-редактора для двух полей

enter image description here Если был способ Я могу переименовать второй sp_team, который будет работать?

Я отчаянно нуждаюсь в обходном пути. Как видите, второе значение не сохраняется. Буду признателен за вашу помощь. Спасибо

1 Ответ

1 голос
/ 18 июня 2020

Вы можете разбить значения внутри хука и вставить их одно за другим.

Это необходимо go в файл 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 );

Скриншоты соответствующих настроек импорта, которые я использовал:

screenshot of WP All Import custom fields setting

screenshot of WP All Import record matching setting

Вы также можете проверить настройки импорта по ссылке, которую вы указали в комментариях.

...