有条件地删除Woocommerce中的订单详细信息部分

时间:2018-09-30 16:21:12

标签: php wordpress templates woocommerce orders

如果if语句为true,我想在我的functions.php中删除WooCommerce中的订单详细信息表。我已经搜索了很多,但不知道该怎么做。

这是WooCommerce wc-template-functions.php中包含文件的方式:

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,
        ) );
    }
}

所以我需要这样的东西:

if ( value != true ) {
    hide_order_details();
}

2 个答案:

答案 0 :(得分:2)

更新 (可选显示客户详细信息)

您可以在if语句(您将在其中定义{{1})中使用带有条件的以下挂钩函数(具有$order_id作为可用参数) })

以下内容将删除“我的帐户”>“查看订单”中的订单明细表:

$value

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。

1)包含客户详细信息:

enter image description here

2)没有客户详细信息:

enter image description here

答案 1 :(得分:1)

据我所知,模板中没有可以使用的钩子。

但是您可以轻松地在主题中覆盖order/order-details.php模板,以添加有关是否输出明细表的条件。

有关的模板在woocommerce/templates/order/order-details.php中。您可以将其复制到your-theme/woocommerce/templates/order/order-details.php并进行所需的更改。

这样,您将不会编辑原始的Woocommerce文件,而是使用正确的方法来覆盖woocommerce输出。亲自检查order-details模板,您会发现这里没有钩子可以防止输出表格。但是,一个简单的if包装器将您的条件放在<table>代码周围就可以解决问题。

编辑:woocommerce_order_item_visible模板中使用的过滤器order-details-item.php可以帮助您防止在订单明细表中显示某些行。但是该模板在订单明细表html中被调用,因此您无法使用它完全删除该表。

注意:我不确定此模板部件是否在其他地方使用。在这种情况下,您应该添加到显示条件中,以检查实际页面是否是您要应用更改的页面(客户仪表板订单详细信息)。如果该模板在其他地方使用,它将在您使用此模板的每个位置应用您的更改。