Search code examples
phpwordpresswoocommercecheckouthook-woocommerce

Woocommerce change order recieved page title


I am trying to change/add in the title of the "Order Recieved" Woocommerce page.

The below snippet works - I am able to change the pre-existing TEXT with the following code:

    add_filter('woocommerce_thankyou_order_received_text', 'woo_change_order_received_text', 10, 2 );
function woo_change_order_received_text( $str, $order ) {
    $new_str = $str . ' We have emailed the purchase receipt to you.';
    return $new_str;
}

The below snippet does not work. - I am unable to change/add the TITLE and also pass in the username to personalise it. Here is the code and also an image of the output I am trying to achieve....The "You are awesome FIRSTNAME" added in.

    <?php
add_filter( 'the_title', 'woo_personalize_order_received_title', 10, 2 );
function woo_personalize_order_received_title( $title, $id ) {
    if ( is_order_received_page() && get_the_ID() === $id ) {
        global $wp;
        // Get the order. Line 9 to 17 are present in order_received() in includes/shortcodes/class-wc-shortcode-checkout.php file
        $order_id  = apply_filters( 'woocommerce_thankyou_order_id', absint( $wp->query_vars['order-received'] ) );
        $order_key = apply_filters( 'woocommerce_thankyou_order_key', empty( $_GET['key'] ) ? '' : wc_clean( $_GET['key'] ) );
        if ( $order_id > 0 ) {
            $order = wc_get_order( $order_id );
            if ( $order->get_order_key() != $order_key ) {
                $order = false;
            }
        }
        if ( isset ( $order ) ) {
            //$title = sprintf( "You are awesome, %s!", esc_html( $order->billing_first_name ) ); // use this for WooCommerce versions older then v2.7
        $title = sprintf( "You are awesome, %s!", esc_html( $order->get_billing_first_name() ) );
        }
    }
    return $title;
}

enter image description here

This should be possible as there are examples on how to do it, such as here...I just can't figure out why the main title wont even appear?


Solution

  • As a workaround I inspected the CSS and changed the text below the header to be a larger size and the font family required.

    Then through the below PHP I created the custom text with the customer name in the header.

        add_filter('woocommerce_thankyou_order_received_text', 'woo_change_order_received_text', 10, 2 );
    function woo_change_order_received_text( $str, $order ) {
        $new_str = sprintf( "You are awesome, %s :) - We've recieved your order.", esc_html( $order->get_billing_first_name() ) );
        return $new_str;
    }