Voici la fonction du plugin:
function dokan_get_admin_commission_by($order, $seller_id)
{
$saved_admin_fee = get_post_meta(dokan_get_prop($order, 'id') , '_dokan_admin_fee', true);
if ($saved_admin_fee != '')
{
return apply_filters('dokan_order_admin_commission', $saved_admin_fee, $order);
}
$admin_commission = 10;
return apply_filters('dokan_order_admin_commission', $admin_commission, $order);
}
J'ai écrasé cette fonction à partir du fichier functions.php
du thème:
function dokan_get_admin_commission_by_overwrite( $admin_commission, $order) {
return $admin_commission+1;
}
add_filter( 'dokan_order_admin_commission', 'dokan_get_admin_commission_by_overwrite', 10, 2 );
Le filtre de thème fonctionne bien, mais il s'exécute deux fois. Donc, il incrémente la valeur deux fois. Il s'exécute deux fois parce que, dans le plug-in, la fonction dokan_get_admin_commission_by
est appelée deux fois. Je ne sais pas comment l'exécuter une seule fois avec le fichier functions.php
du thème.
La fonction du plugin dokan_get_admin_commission_by()
exécute apply_filters('dokan_order_admin_commission' ... )
deux fois, mais utilise return
à chaque fois, de sorte que le filtre est pas s'exécute deux fois.
La cause probable de l’incrément double est que, dans le code suivant:
if ($saved_admin_fee != '')
{
return apply_filters('dokan_order_admin_commission', $saved_admin_fee, $order);
}
le plugin donne votre filtre de thème $saved_admin_fee
comme $admin_commission
, d'autre part, dans le code suivant:
$admin_commission = 10;
return apply_filters('dokan_order_admin_commission', $admin_commission, $order);
le plugin est donne toujours 10
en tant que $admin_commission
valeur au filtre de thème.
Ainsi, vous devrez peut-être gérer cette même condition dans votre fonction de thème.
De plus, si le filtre s'exécute deux fois, il doit alors provenir d'un autre endroit. Dans ce cas, vous devrez supprimer le filtre une fois la fonction thème exécutée.
functions.php
:Votre thème final CODE sera donc le suivant:
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 );
Maintenant, cette fonction ne devrait être exécutée qu’une seule fois et être incrémentée avec la condition vérifiée.
Remarque: si vous êtes toujours confus ou si vous avez besoin d'une assistance supplémentaire, je vous suggère de contacter l'équipe de support de ce plugin.