双倍增量的可能原因:
插件函数
dokan_get_admin_commission_by()
执行
apply_filters(\'dokan_order_admin_commission\' ... )
两次,但两次都使用
return
, 所以过滤器是
not 执行两次。
获得双倍增量的可能原因是,在以下代码中:
if ($saved_admin_fee != \'\')
{
return apply_filters(\'dokan_order_admin_commission\', $saved_admin_fee, $order);
}
插件正在为您提供主题过滤器
$saved_admin_fee
像
$admin_commission
, 另一方面,在以下代码中:
$admin_commission = 10;
return apply_filters(\'dokan_order_admin_commission\', $admin_commission, $order);
插件是
always giving 10
as $admin_commission
value 主题过滤器。
因此,您可能需要在主题函数中处理相同的条件。
此外,如果过滤器执行了两次,那么它必须来自其他地方。在这种情况下,一旦执行了主题函数,就必须删除过滤器。
示例代码修复functions.php
:
因此,您的最终主题代码如下:
function dokan_get_admin_commission_by_overwrite( $admin_commission, $order) {
remove_filter( \'dokan_order_admin_commission\', \'dokan_get_admin_commission_by_overwrite\', 10, 2 );
if ( $admin_commission === 10 ) {
return $admin_commission + 1;
}
return $admin_commission;
}
add_filter( \'dokan_order_admin_commission\', \'dokan_get_admin_commission_by_overwrite\', 10, 2 );
现在,此函数应该只运行一次,并在检查了正确的条件后递增。
Note: 如果您仍然感到困惑,或者需要进一步的帮助,那么我建议您联系该插件的支持团队。