by Guest » 03 Jan 2025, 05:15
Ich erstelle eine Online-Einladungswebsite mit Elementor, WooCommerce und benutzerdefinierten Beitragstypen. Hier ist das Problem: Ich möchte eine WooCommerce-Produktseite (entworfen mit Elementor) in einen benutzerdefinierten Beitragstyp duplizieren (
), wenn die Bestellung abgeschlossen ist. Der duplizierte Inhalt erscheint jedoch in einem einzelnen
Texteditor-Widget und ich möchte die Elementor-Struktur (z. B. Abschnitte, Spalten, Widgets) beibehalten.
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:
- 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 (
). Ich möchte, dass die Elementor-Struktur (Abschnitte, Spalten, Widgets) im duplizierten Beitrag erhalten bleibt.
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
Hier ist der Screenshot:
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 (
) wie auf der Originalseite. Dazu gehört auch die Aufrechterhaltung der Möglichkeit, den Beitrag im Elementor-Editor zu bearbeiten.
Ich erstelle eine Online-Einladungswebsite mit Elementor, WooCommerce und benutzerdefinierten Beitragstypen. Hier ist das Problem: Ich möchte eine WooCommerce-Produktseite (entworfen mit Elementor) in einen benutzerdefinierten Beitragstyp duplizieren ([code]edit-invitation[/code]), wenn die Bestellung abgeschlossen ist. Der duplizierte Inhalt erscheint jedoch in einem einzelnen [b]Texteditor-Widget[/b] und ich möchte die Elementor-Struktur (z. B. Abschnitte, Spalten, Widgets) beibehalten.
Was Ich habe versucht
[list]
[*][b]Benutzerdefinierter PHP-Code für die Duplizierung[/b]
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]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');
[/code]
[*][b]Benutzerdefinierte Vorlage für CPT[/b] Ich habe eine benutzerdefinierte Vorlage single-edit-invitation.php um den Inhalt von edit-invitation-Beiträgen anzuzeigen. Hier ist ein Auszug:
[code]
[/code]
[*][b]Elementor-CSS in die Warteschlange stellen[/b] Ich habe das Elementor-CSS für das WooCommerce-Produkt in die Warteschlange gestellt, um sicherzustellen, dass Stile im CPT korrekt angewendet werden :
[code]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);
}
}
[/code]
[/list]
[h4][b]Das Problem[/b][/h4]
Trotz erfolgreicher Duplizierung Für den Inhalt und die Stile von Elementor werden alle Widgets der Elementor-Seite in einem einzigen [b]Texteditor-Widget[/b] im benutzerdefinierten Beitragstyp ([code]edit-invitation[/code]). Ich möchte, dass die Elementor-Struktur (Abschnitte, Spalten, Widgets) im duplizierten Beitrag erhalten bleibt.
[h4][b]Was ich suche[/b][/h4]
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?
[h4][b]Zusätzliche Informationen[/b][/h4]
[list]
[*][b]WordPress-Version:[/b] 6.7.1
[*][b]WooCommerce-Version :[/b] 9.5.1
[*][b]Elementor-Version:[/b] 3.26.2
[*][b]Benutzerdefinierter Beitragstyp: [/b] edit-invitation
[/list]
Hier ist der Screenshot:
single-edit-invitation.php
[img]https://i.sstatic.net/oJfmgf8A.png[/img]
Woocommerce-Produkt:
[img]https://i.sstatic.net/cc0SvygY.png[/img]
Hier ist der Admin, ich habe die Online-Einladung in WooCommerce gestellt:
[img]https://i.sstatic.net/IYgNUirW.png[/img]
Und dann füge ich es aus den Funktionen rudr_complete_for_status ein Benutzerdefinierter Beitragstyp „Bearbeitungseinladung“, wie im Bild unten:
[img]https://i.sstatic.net/WxxQXuxw.png[/img]
Ich habe erwartet, dass die Elementor-Struktur (Abschnitte, Spalten und Widgets) von der WooCommerce-Produktseite im duplizierten benutzerdefinierten Beitragstyp angezeigt wird ([code]edit-invitation[/code]) wie auf der Originalseite. Dazu gehört auch die Aufrechterhaltung der Möglichkeit, den Beitrag im Elementor-Editor zu bearbeiten.