Как вставить данные в конкретную таблицу на БД при использовании WP ALL IMPORT - PullRequest
0 голосов
/ 30 сентября 2019

Прежде всего, извините, мой английский не самый лучший. Надеюсь, вы мне поможете.

Я занимаюсь разработкой сайта Wordpress с использованием плагина RnB - WooCommerce Booking & Rental. Плагин работает отлично. Проблема возникает, когда я пытаюсь создать свои продукты, используя WP ALL IMPORT из файла CSV.

В этих плагинах используются два типа записей для продуктов.

  1. Продукты:То же самое, что и в woocommerce, но с новыми метаданными, которые подключаются к CPT «Инвентаризация».

  2. Инвентаризация: Новый тип записи, имеет диапазон цен за день, количество и т. Д. (Все данные для аренды продуктов).

Я могу вставить все необходимые данные, делая 2 импорта. Один для продуктов и один для инвентаря. Проблема состоит в том, что у этих плагинов есть таблица в базе данных, которая "связывает" элементы инвентаря с продуктами. (я думаю, что это таблица отношений)

изображение таблицы: https://desarrollodemo.tk/bebe/tabledata.png

Имя таблицы: wpmp_rnb_inventory_product content: (2 столбца)

inventory product
1565      1601

Эта таблица просто нуждается в инвентареИдентификатор и идентификатор продукта.

WP ALL IMPORT имеет хук для выполнения действий при создании / обновлении сообщения. http://www.wpallimport.com/documentation/advanced/action-reference/

Я попробовал с этим

Сначала я получаю идентификатор инвентаризации CTP Я получаю этот идентификатор, используя этот код в функциях Wp All Import при выполнении импорта. Он берет заголовок из CSV и находит инвентарь с таким же заголовком, затем возвращает идентификатор.

function id_returner($title = null) {
    if ( !empty( $title ) ) {
        $ids = get_page_by_title( $title, OBJECT, 'inventory' );
        $id = $ids->ID;
        return $id;
    }
}

Затем я попытался добавить этот код в functions.php, чтобы перехватить это действие при создании сообщения/ сохранено Wp All Import.

add_action('pmxi_saved_post', 'post_saved', 10, 1);

function post_saved($id) {
    $inventario = get_post_meta($id, 'id_inventario', true);
    global $wpdb;
    $table = $wpdb->prefix.'wpmp_rnb_inventory_product';
    $data = array('column1' => $inventario, 'column2' => $id);
    $format = array('%s','%d');
    $wpdb->insert($table,$data,$format);
    $my_id = $wpdb->insert_id;
}

Но это не работает вообще. Я не получаю никаких сообщений об ошибках, но после импорта таблица пуста.

Надеюсь, вы мне поможете !. Спасибо за ваше время

1 Ответ

0 голосов
/ 05 октября 2019

Вы можете перетащить элемент пользовательского поля _redq_product_inventory из раздела Доступные данные в элементы экспорта. Следует добавить идентификаторы инвентаризации.

При настройке импорта создайте новое настраиваемое поле, используя _redq_product_inventory в качестве имени и {_redq_product_inventory[1]} в качестве значения.

Вот функциячтобы импортировать товары и запасы в таблицу:

add_action('pmxi_saved_post', 'post_saved', 10, 1);
function post_saved($product_id) {

    $inventories = get_post_meta($product_id,'_redq_product_inventory',true);

    global $wpdb;
    $table = $wpdb->prefix.'rnb_inventory_product';

    foreach($inventories as $inventory) {
        $data = array('inventory' => $inventory, 'product' => $product_id);
        $format = array('%d','%d');
        $wpdb->insert($table,$data,$format);
    }
}

Если вы удаляете и повторно импортируете запасы с помощью WP All Import, их новые идентификаторы не будут совпадать с идентификаторами в ваших товарах. Чтобы избежать этого, вы можете использовать Инструменты >> Экспорт и Инструменты >> Импорт для своих записей инвентаря.

...