我正在将网站迁移到新主机,并且出现以下错误。我不太了解此错误的含义以及为什么在当前主机上可以正常运行,但是尽管使用完全集成迁移插件进行了精确复制,但在新主机上却显示了此错误
警告:缺少参数2 WC_Custom_Product :: action_woocommerce_before_single_product_summary() 在/wp-content/themes/custom-theme/classes/wc-custom-product.php
该函数看起来像这样,实际上没有太多功能,但是我不知道如何解决
public function __construct() {
$this->product_id = get_the_ID();
$this->product = wc_get_product( $this->product_id );
add_action( 'woocommerce_before_single_product_summary', array($this, 'action_woocommerce_before_single_product_summary'), 10, 2 );
}
function action_woocommerce_before_single_product_summary(
$woocommerce_show_product_sale_flash, $int ) {
echo "<div class='product-row first'>";
}
任何帮助将不胜感激
答案 0 :(得分:1)
位于content-product.php
template的Woocommerce动作挂钩woocommerce_before_single_product_summary
仅接受一个参数,并且几乎从未使用过。
请注意,动作挂钩不需要像过滤挂钩一样返回参数。
此外,在构造函数中,您无需指定参数的数量,并且由于在挂钩函数中未使用任何参数,因此您可以仅将它们全部删除,就像woocommerce所做的{ {3}}和here。
因此,请尝试以下操作:
public function __construct() {
$this->product_id = get_the_ID();
$this->product = wc_get_product( $this->product_id );
add_action( 'woocommerce_before_single_product_summary', array($this, 'action_woocommerce_before_single_product_summary') );
}
public function action_woocommerce_before_single_product_summary() {
echo "<div class='product-row first'>";
}
它应该可以正常工作。
答案 1 :(得分:0)
您定义函数的方式仅适用于传递给它的2个参数。 woocommerce动作woocommerce_before_single_product_summary
显然只传递了一个参数。
因此,为了避免这种情况,您只需要在这种情况下为参数定义默认值,这样就不会触发“缺少参数”警告,就像这样:
function action_woocommerce_before_single_product_summary(
$woocommerce_show_product_sale_flash = null, $int = 0 ) {
echo "";
}
请注意,为安全起见,我如何将$ woocommerce_show_product_sale_flash定义为NULL?如果号召性用语将任何值传递给该函数,则默认值(null和零)将被覆盖。
还请记住,您的“错误”实际上只是一个警告。它不会破坏您的代码,您的功能应该可以工作,但这取决于您的PHP错误设置,并且您可能在WordPress配置中显示了警告消息或启用了调试模式。