WooCommerce:如何覆盖unctions.php中的核心函数?

时间:2017-11-02 作者:mysticalghoul

是否有方法覆盖函数中的woocommerce核心函数。php?

例如,文件位置位于:wp-content/plugins/woocommerce/includes/class-wc-order-item-shipping。php

有以下公共功能

public function set_method_title( $value ) {
  $this->set_prop( \'name\',  wc_clean($value) );
  $this->set_prop( \'method_title\',  wc_clean($value)  );
}
如何将其更改为:

public function set_method_title( $value ) {
  $this->set_prop( \'name\',  $value );
  $this->set_prop( \'method_title\',  $value  );
}

2 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

您不能用自己的代码替换任何插件函数,除非:

插件包装在function_exists() 检查这使得函数可插入,这意味着如果您先定义它,插件将不会再次尝试定义它,您的插件将被使用。此函数不可插入apply_filters() 函数,用于替换值。该值可能是函数的输出,通过使用过滤器,您可以用自己的输出替换该输出您标识的特定功能也没有,因此无法替换。我认为WooCommerce可能有很好的理由申请wc_clean() 对于这些属性,如果不存在,则可能无法按预期运行,或者可能会带来安全风险。

SO网友:Erica

删除这些功能是非常不明智的。它正在准备数据以输入数据库。这些条目只接受简单文本,因此wc_clean 函数运行WordPresssanitize_text_field 作用根据WordPress documentation, 此功能:

检查是否存在无效的UTF-8转换单(&L);字符到实体删除所有标记都会删除换行符、制表符和额外的空格,即使可以删除八位字节,它们也可能无法正确保存在数据库中。它还将使您面临可能的攻击,因为它将允许注入可能有害的代码。在保存数据之前,应始终对其进行清理,并且数据必须与表列设置相匹配,以避免某些数据被切断。

结束