Woocommerce中的“警告:WC_Custom_Product缺少参数2”

时间:2018-11-25 03:29:03

标签: php wordpress woocommerce product hook-woocommerce

我正在将网站迁移到新主机,并且出现以下错误。我不太了解此错误的含义以及为什么在当前主机上可以正常运行,但是尽管使用完全集成迁移插件进行了精确复制,但在新主机上却显示了此错误

  

警告:缺少参数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'>";
}

任何帮助将不胜感激

2 个答案:

答案 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配置中显示了警告消息或启用了调试模式。