Code: Select all
edit-invitation
Was Ich habe versucht
- Benutzerdefinierter PHP-Code für die Duplizierung
Ich verwende den folgenden Code in Functions.php, um den Inhalt einer WooCommerce-Produktseite in die einzufügen edit-invitation benutzerdefinierter Beitragstyp, wenn die Bestellung abgeschlossen ist:Code: Select all
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');
- Benutzerdefinierte Vorlage für CPT Ich habe eine benutzerdefinierte Vorlage single-edit-invitation.php um den Inhalt von edit-invitation-Beiträgen anzuzeigen. Hier ist ein Auszug:
Code: Select all
- Elementor-CSS in die Warteschlange stellen Ich habe das Elementor-CSS für das WooCommerce-Produkt in die Warteschlange gestellt, um sicherzustellen, dass Stile im CPT korrekt angewendet werden :
Code: Select all
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); } }
Das Problem
Trotz erfolgreicher Duplizierung Für den Inhalt und die Stile von Elementor werden alle Widgets der Elementor-Seite in einem einzigen Texteditor-Widget im benutzerdefinierten Beitragstyp (Code: Select all
edit-invitation
Was ich suche
Wie kann ich eine von Elementor gestaltete WooCommerce-Produktseite in einen benutzerdefinierten Beitragstyp duplizieren und gleichzeitig die Struktur der Elementor-Widgets beibehalten? Fehlt mir etwas beim Kopieren oder Rendern von _elementor_data?Zusätzliche Informationen
- WordPress-Version: 6.7.1
- WooCommerce-Version : 9.5.1
- Elementor-Version: 3.26.2
- Benutzerdefinierter Beitragstyp: edit-invitation
single-edit-invitation.php

Woocommerce-Produkt:

Hier ist der Admin, ich habe die Online-Einladung in WooCommerce gestellt:

Und dann füge ich es aus den Funktionen rudr_complete_for_status ein Benutzerdefinierter Beitragstyp „Bearbeitungseinladung“, wie im Bild unten:

Ich habe erwartet, dass die Elementor-Struktur (Abschnitte, Spalten und Widgets) von der WooCommerce-Produktseite im duplizierten benutzerdefinierten Beitragstyp angezeigt wird (
Code: Select all
edit-invitation