Код: Выделить всё
edit-invitationЧто Я пробовал
- Пользовательский PHP-код для дублирования
Я использую следующий код в function.php, чтобы вставить содержимое страницы продукта WooCommerce в edit-invitation пользовательский тип публикации при выполнении заказа:Код: Выделить всё
function rudr_complete_for_status($order_id) { $order = wc_get_order($order_id); $order_key = $order->get_order_key(); foreach ($order->get_items() as $item_id => $item) { $product = $item->get_product(); if ($product) { $product_id = $product->get_id(); $elementor_data = get_post_meta($product_id, '_elementor_data', true); wp_insert_post(array( 'post_type' => 'edit-invitation', 'post_title' => '#' . $order->get_id() . ' - ' . $order->get_billing_first_name(), 'post_content' => \Elementor\Plugin::$instance->frontend->get_builder_content($product_id), 'post_status' => 'publish', 'meta_input' => array( '_elementor_data' => $elementor_data, '_elementor_edit_mode' => 'builder', '_elementor_template_type' => 'page', 'product_id' => $product_id, ) )); } } } add_action('woocommerce_order_status_completed', 'rudr_complete_for_status'); - Пользовательский шаблон для CPT Я создал собственный шаблон single-edit-invitation.php для отображения содержимого сообщений с приглашением на редактирование. Вот отрывок:
Код: Выделить всё
- Постановка CSS Elementor в очередь Я поставил CSS Elementor в очередь для продукта WooCommerce, чтобы гарантировать правильное применение стилей в CPT. :
Код: Выделить всё
if (is_singular('edit-invitation')) { $product_id = get_post_meta($post->ID, 'product_id', true); if ($product_id) { $elementor_css_path = wp_upload_dir()["baseurl"] . '/elementor/css/post-' . $product_id . '.css'; wp_enqueue_style('elementor-product-styles', $elementor_css_path); } }
Проблема
Несмотря на успешное дублирование содержимого и стилей Elementor, все виджеты со страницы Elementor объединяются в один Виджет «Текстовый редактор» в пользовательском типе сообщения (Код: Выделить всё
edit-invitation). Я хочу, чтобы структура Elementor (разделы, столбцы, виджеты) оставалась неизменной в дублируемом сообщении.
[h4][b]Что я ищу[/b][/h4]
Как я могу дублировать страницу продукта WooCommerce, разработанную Elementor, в пользовательский тип сообщения, сохраняя при этом структуру виджетов Elementor? Что-то мне не хватает при копировании или отображении _elementor_dataДополнительная информация
- Версия WordPress: 6.7.1
- Версия WooCommerce : 9.5.1
- Версия Elementor: 3.26.2
- Пользовательский тип сообщения: edit-invitation
single-edit-invitation.php

Продукт Woocommerce:

Вот админ, я разместил онлайн-приглашение в WooCommerce Заказ:

А затем из функций rudr_complete_for_status, Я вставляю его в приглашение на редактирование пользовательского типа сообщения, как показано на изображении ниже:

Я ожидал, что на странице продукта WooCommerce появится структура Elementor (разделы, столбцы и виджеты) в дублированном пользовательском типе сообщения (
Код: Выделить всё
edit-invitationПодробнее здесь: https://stackoverflow.com/questions/793 ... t-type-wit
Мобильная версия