覆盖WooCommerce中的管理员视图

时间:2014-10-10 13:59:05

标签: wordpress woocommerce

我知道您可以通过定义自己的核心模板并将其命名为与核心模板相同来覆盖WooCommerce核心模板。但我想要做的是自定义一些管理视图,即订单编辑屏幕。

我想调整的文件是/includes/admin/meta-boxes/views/html-order-item.php,但显然我不想在核心文件中应用更改,因为我的更改会丢失在下一个WooCommerce更新。

有没有办法可以创建自己运行的html-order-item.php文件而不是核心文件?我现在已经搜索了很长一段时间,但我无法理解......

谢谢!

1 个答案:

答案 0 :(得分:2)

您很难从这些屏幕中删除功能。这将需要替换太多的插件代码以便以后升级。我想你可以用css样式隐藏或改变一些外观。

您可以做的是在各种do_action来电中添加自己的功能。例如,在包含您提到的文件的html-order-items.php中,您可以进行以下操作调用:

include( 'html-order-item.php' );

do_action( 'woocommerce_order_item_' . $item['type'] . '_html', $item_id, $item );

你可以在那里挂钩。

html-order-item.php中你还有三个钩子:

<?php do_action( 'woocommerce_before_order_itemmeta', $item_id, $item, $_product ) ?>

<?php do_action( 'woocommerce_after_order_itemmeta', $item_id, $item, $_product ) ?>

<?php do_action( 'woocommerce_admin_order_item_values', $_product, $item, absint( $item_id ) ); ?>

您可能还需要查找保存数据的挂钩。

编辑:将项目添加到要跳过的元字段列表中:

function remove_order_item_meta_fields( $fields ) {
    $fields[] = '_subscription_period';
    $fields[] = '_subscription_interval';

    return $fields;
}
add_filter( 'woocommerce_hidden_order_itemmeta', 'remove_order_item_meta_fields' );