有一个用于woocommerce的插件,提供了一些自定义的送货方式。它具有一个钩子,允许其他人编辑费率。
function calculate_shipping( $package = array() ) {
...
$rate = apply_filters( 'pws_add_rate', array(
'id' => $this->get_rate_id(),
'label' => $this->title,
'cost' => PWS()->convert_currency( $shipping_total )
), $package, $this );
$this->add_rate( $rate );
我用它来编辑费率。 现在我需要编辑它的表单字段。在函数init_form_field
中设置了instance_form_fields,并且其中没有钩子。 __construct
方法启动init
方法和init
方法启动init_form_filed
。下面是自定义方法类的概述:
class WC_Custom_Method extends WC_Shipping_Method {
public function __construct( $instance_id = 0 ) {
...
$this->init();
}
public function init() {
$this->init_form_fields();
...
}
public function init_form_fields() {
$this->instance_form_fields = array(...);
}
...
}
一个丑陋的方法是阻止功能在最开始就触发并在主插件文件中编辑php文件。或者只是手动进行更改。 我需要知道还有什么更好的办法吗?