Wie dupliziere ich eine Elementor-Seite von einem WooCommerce-Produkt in einen benutzerdefinierten Beitragstyp, ohne die

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Wie dupliziere ich eine Elementor-Seite von einem WooCommerce-Produkt in einen benutzerdefinierten Beitragstyp, ohne die

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 (

Code: Select all

edit-invitation
), 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:

    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
). 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
Image

Woocommerce-Produkt:
Image

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

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

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
) wie auf der Originalseite. Dazu gehört auch die Aufrechterhaltung der Möglichkeit, den Beitrag im Elementor-Editor zu bearbeiten.

Top