如何在WooCommerce中编辑“ woocommerce_thankyou”挂钩的输出?

时间:2020-02-29 10:05:53

标签: php wordpress woocommerce hook-woocommerce orders

我确信这已经被问了很多次了。我什至没有几个答案,但我真的不知道如何在Wordpress + WooCommerce中编辑任何“动作”或“过滤器”挂钩。

作为结帐页面上的示例,通常在购物车摘要的底部,该信息由以下代码生成:

<?php do_action( 'woocommerce_thankyou', $order->get_id() ); ?>

我尝试了其他方法来搜索其他文件中的“ woocommerce_thankyou”,但找不到任何东西。那么,如何生成输出代码?必须有一个执行此操作的文件。

1 个答案:

答案 0 :(得分:3)

您只是错过了WooCommerce插件文件includes/wc-template-hooks.php,其中的动作挂钩woocommerce_thankyou is called on line 260触发了woocommerce_order_details_table()函数,该函数位于{{3 }}:

if ( ! function_exists( 'woocommerce_order_details_table' ) ) {

    /**
     * Displays order details in a table.
     *
     * @param mixed $order_id Order ID.
     */
    function woocommerce_order_details_table( $order_id ) {
        if ( ! $order_id ) {
            return;
        }

        wc_get_template(
            'order/order-details.php',
            array(
                'order_id' => $order_id,
            )
        );
    }
}

如您所见,此函数调用WooCommerce模板includes/wc-template-functions.php,该模板输出相关的订单详细信息。

因此,您将必须编辑WooCommerce模板line 2641 to 2560进行更改。 但是此模板在其他页面上已多次使用。

因此,您可以使用is_wc_endpoint_url('order-received')条件标记来定位WooCommerce谢谢页面,您将可以使用它来覆盖此模板,例如:

if ( is_wc_endpoint_url('order-received') ) {
    // The altered code for the thankyou page
} else {
    // The normal code for all other pages
}

相关:order/order-details.php