Support » WooCommerce » Woocommerce „Bestellung eingegangen“-Nachricht

  • Gelöst rico2806

    (@rico2806)


    Hi. ich habe keine Ahnung vom programmieren aber ich denke das sollte einfach sein. Ich bin in der thanks.php meiner WordPressseite unter woocommerce. Ich möchte ein anklickbares “here” mit einem Link zu der „Bestellung eingegangen“ Nachricht hinzufügen :
    Thank you. Your order has been received. Start the course here.

    So sieht der Kurs mit meinem Fehler aus (der Code wird in der Nachricht angezeigt).

    <p class=“woocommerce-notice woocommerce-notice–success woocommerce-thankyou-order-received“><?php echo apply_filters(‚woocommerce_thankyou_order_received_text‘, esc_html__(‚Thank you. Your order has been received. Start the course < a href=“myurl.com“>here.< /a>‘, ‚mesmerize‘), $order); ?></p>

    So sieht die Nachricht auf der Website aus:
    Thank you. Your order has been received. Start the course < a href=“myurl.com“>here.

    Kann mir jemand weiterhelfen?

Ansicht von 6 Antworten - 1 bis 6 (von insgesamt 6)
  • Ich bin in der thanks.php meiner WordPressseite unter woocommerce.

    Was meinst du damit? Was soll das für eine Datei sein?
    Meinst du das Template thankyou.php in deinem Theme Mesmerize?

    Änderungen solltest du nicht im Theme selbst vornehmen. Sie werden beim nächsten Update überschrieben. Besser ist es, wenn du ein Child-Theme anlegst, was aber für so eine kleine Anpassung schon fast zuviel ist. Ich würde eher das Plugin Code Snippets empfehlen. Im Menü dieses Plugins fügst du ein neues Code-Snippet hinzu und gibst folgenden Code ein:

    add_filter( 'woocommerce_thankyou_order_received_text', 'show_course_link' );
    function show_course_link() {
    	return 'Vielen Dank für deine Bestellung. Gehe jetzt direkt zum <a href="https://example.com/">Kurs</a>.';
    }

    Den Text kannst du direkt in der Sprache eingeben, die du verwenden möchtest. Den Link musst du natürlich noch ändern.

    Vielen Dank. So habe ich es gemacht.

    Schön. Denkst du bitte daran, beim nächsten Mal deine Frage als „gelöst“ zu markieren. Das hilft uns, weil …

    Wenn’s richtig läuft, es funktioniert,
    werden Themen als „gelöst“ markiert,
    damit auch alle in der Runde wissen,
    dass sie hier nicht mehr helfen müssen.
    🌻

    rico2806

    (@rico2806)

    Ich habe hierzu doch noch eine Frage.
    Der Tipp hat super funktioniert, allerdings habe ich bemerkt, dass er für Paypal Bestellungen nicht funktioniert. Dort wird trotz des snippets als „order received message“ dieser Text angezeigt (und nicht mein Text aus dem snippet):
    Thank you for your payment. Your transaction has been completed, and a receipt for your purchase has been emailed to you. Log into your PayPal account to view transaction details.

    Ich habe dann rausgefunden das es hierher kommt: wp-content/plugins/woocommerce/includes/gateways/paypal/class-wc-gateway-paypal.php

    public function order_received_text( $text, $order ) {
    if ( $order && $this->id === $order->get_payment_method() ) {
    return esc_html__( ‚Thank you for your payment. Your transaction has been completed, and a receipt for your purchase has been emailed to you. Log into your PayPal account to view transaction details.‘, ‚woocommerce‘ );
    }

    return $text;
    }

    Daher habe ich nun ein neues snippet hinzugefügt, welches aber nicht funktioniert:

    global $WC_Gateway_Paypal;
    add_filter ( ‚order_received_text‘, ‚paypal_show_course_link‘);
    function paypal_show_course_link( $text, $order ) {
    if ( $order && $this->id === $order->get_payment_method() ) {
    return esc_html__( ‚Meine individuelle Nachricht‘, ‚woocommerce‘ );
    }

    return $text;
    }

    Hat jemand eine Idee wie ich das Snippet zum laufen bringe, damit ich auch für paypal-käufer die Nachricht ändern kann?

    Moderator Bego Mario Garde

    (@pixolin)

    esc_html__( ) ist eine Übersetzungsfunktion, die den Inhalt entsprechend der Sprachdatei für die von dir gewählte Sprache ausgibt. Du kannst diese Übersetzung mit einem eigenen Text überschreiben.

    function change_translated_text( $translated_text ) {
     if ( $translated_text == 'Vielen Dank für deine Zahlung. Deine Transaktion ist abgeschlossen und du erhältst per E-Mail einen Beleg für deinen Kauf. Melde dich bei deinem PayPal-Konto an, um Transaktionsdetails anzuzeigen.' ) {
     $translated_text = 'Ey, super cool dass du bezahlt hat. Das Ding ist durch und du erhältst wahrscheinlich eine nervige E-Mail, weil du was gekauft hast. Kein Plan? Dann meld dich bei Paypal an und schau da.';
     }
     return $translated_text;
    }
    add_filter( 'gettext', 'change_translated_text', 20 );

    (Beim Text solltest du dir vielleicht eine passendere Formulierung überlegen.)

    Das Code-Snippet kannst du auch wieder mit Code Snippets einfügen.

    Filter kannst du mit add_filter() nur dort nutzen, wo die Programmierer auch eine Schnittstelle (einen „Hook“) vorgesehen haben. Dazu verwenden die Entwickler die Funktion apply_filters(). Fehlt die, kannst du auch keine Funktion einbinden.

    rico2806

    (@rico2806)

    Ich verstehe. Vielen Dank für das Snippet und die Erklärung :).

Ansicht von 6 Antworten - 1 bis 6 (von insgesamt 6)