J'ai la fonction suivante dans un plugin existant:
public static function init() {
add_filter( 'wcs_view_subscription_actions', __CLASS__ . '::add_edit_address_subscription_action', 10, 2 );
}
public static function add_edit_address_subscription_action( $actions, $subscription ) {
if ( $subscription->needs_shipping_address() && $subscription->has_status( array( 'active', 'on-hold' ) ) ) {
$actions['change_address'] = array(
'url' => add_query_arg( array( 'subscription' => $subscription->get_id() ), wc_get_endpoint_url( 'edit-address', 'shipping' ) ),
'name' => __( 'Change Address', 'woocommerce-subscriptions' ),
);
}
return $actions;
}
J'essaie de modifier cela afin de pouvoir ajouter quelque chose au tableau $actions
. Est-ce possible sans modifier directement le plug-in, puis-je le faire en filtrant dans le fichier functions.php
?
Vous pouvez simplement utiliser le même filtre avec un paramètre de priorité inférieure ou supérieure pour apporter les modifications appropriées au tableau $actions
. De cette façon, vous pouvez créer un petit plugin personnalisé (ou modifier le fichier functions.php
du thème), sans avoir à modifier directement le plugin existant.
Par exemple: si vous souhaitez que votre code personnalisé soit exécuté après la fonction add_edit_address_subscription_action
, utilisez un argument de priorité plus élevé (priorité plus faible) pour le filtre wcs_view_subscription_actions
.
Exemple de code (à utiliser comme élément d'un plugin personnalisé ou dans le fichier functions.php
de votre thème):
// original filter uses priority 10, so priority 11 will make sure that this function executes after the original implementation
add_filter( 'wcs_view_subscription_actions', 'wpse_custom_action_after', 11, 2 );
function wpse_custom_action_after( $actions, $subscription ) {
// your custom changes to $actions array HERE
// this will be executed after add_edit_address_subscription_action function
return $actions;
}
Par contre, si vous souhaitez que votre code personnalisé soit exécuté avant la fonction add_edit_address_subscription_action
, utilisez un argument de priorité plus petit (priorité plus élevée).
Exemple de code (à utiliser comme élément d'un plugin personnalisé ou dans le fichier functions.php
de votre thème):
// original filter uses priority 10, so priority 9 will make sure that this function executes before the original implementation
add_filter( 'wcs_view_subscription_actions', 'wpse_custom_action_before', 9, 2 );
function wpse_custom_action_before( $actions, $subscription ) {
// your custom changes to $actions array HERE
// this will be executed before add_edit_address_subscription_action function
return $actions;
}
Oui, vous pouvez modifier le tableau $actions
dans functions.php
avec votre propre fonction.
function your_function_name( $actions, $subscription ) {
// here you can modify $actions array
//
return $actions;
}
add_filter( 'wcs_view_subscription_actions', 'your_function_name', 15, 2 );