【问题标题】:Change WooCommerce thankyou page title based on order status根据订单状态更改 WooCommerce 感谢页面标题
【发布时间】:2021-03-08 15:39:35
【问题描述】:

尝试根据特定订单状态更改感谢页面的标题,方法是组合过滤器和操作,如下所示:

add_action( 'woocommerce_thankyou', 'order_thank_you_status' );

function order_thank_you_status( $order_id ){

    // Get an instance of the `WC_Order` Object
    $order = wc_get_order( $order_id );
    // Get the order number
    $order_number  = $order->get_order_number();
    // Get the order status name
    $status_name  = wc_get_order_status_name( $order->get_status() );
    // Get the order key
    $test_order_key = $order->get_order_key();

    if ( $order->has_status('on-hold') || $order->has_status('mockup-requested') || $order->has_status('mockup-sent')|| $order->has_status('mockup-approved')) {
        echo 'helllo world';

        add_filter( 'the_title', 'woo_title_order_received', 10, 2 );
        function woo_title_order_received( $title, $id ) {
            if ( function_exists( 'is_order_received_page' ) &&
                is_order_received_page() && get_the_ID() === $id ) {
                $title = "Mockup request received";
            }
            return $title;
        }
    }
}

但我尝试了多种方法将两者结合起来,但没有任何成功。

【问题讨论】:

    标签: php wordpress woocommerce endpoint orders


    【解决方案1】:

    您可以使用以下命令根据订单状态更改“已收到订单”页面标题:

    add_action( 'the_title', 'change_order_received_page_title_based_on_order_status' );
    function change_order_received_page_title_based_on_order_status( $title ){
        if ( is_wc_endpoint_url('order-received') && $title === 'Order received' ) {
            global $wp;
    
            $targeted_statuses = array('on-hold', 'mockup-requested', 'mockup-sent', 'mockup-approved' );
    
            // Get an instance of the `WC_Order` Object
            $order = wc_get_order( absint($wp->query_vars['order-received']) );
    
            if ( is_a( $order, 'WC_Order' ) && in_array( $order->get_status(), $targeted_statuses ) ) {
                return __("Mockup request received", "woocommerce");
            }
        }
        return $title;
    }
    

    代码进入活动子主题(或活动主题)的functions.php 文件中。经过测试并且可以工作。

    【讨论】:

    • 非常好,这很有用,现在我可以浏览并设置感谢页面以显示每个阶段/更改状态。我再次为我的用例删除了&& $title === Order received,它起作用了。对于有兴趣在感谢页面上查看带有阶段或状态的订单的任何人,允许客户在不登录的情况下检查订单状态,因为在状态更改通知电子邮件中使用了order_key
    猜你喜欢
    • 2021-04-08
    • 2022-10-05
    • 2018-04-15
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 2016-10-04
    相关资源
    最近更新 更多