Je veux créer un filtre dans mon thème functions.php pour changer l'URL de $ icon_html dans cette fonction du plugin.
public function get_icon() {
// Paypal icon
$icon_html = '<img src="Paypal.png" />';
return apply_filters( 'woocommerce_gateway_icon', $icon_html, $this->get_id() );
}
Comment effectuer cela? $ icon_html n'est pas unique.
Merci Thibault
Chaque fois que vous voyez apply_filters( 'filter_name', $value )
, vous pouvez utiliser add_filter()
pour remplacer ou modifier la valeur de $value
:
add_filter( 'filter_name', 'callback_function' );
Où callback_function
est une fonction que vous créez. Cette fonction acceptera $value
en tant qu'argument et devra renvoyer une nouvelle valeur. Donc, pour votre exemple, cela ressemblera à ceci:
function wpse_275788_replace_icon( $icon_html, $id ) {
$icon_html = 'Put new icon html here.';
return $icon_html;
}
add_filter( 'woocommerce_gateway_icon', 'wpse_275788_replace_icon', 10, 2 );
Je veux mettre à jour l'icône Paypal:
Voici comment ils mettent les icônes de carte de crédit:
/**
* Returns the gateway icon markup
*
* @since 1.0.0
* @see WC_Payment_Gateway::get_icon()
* @return string icon markup
*/
public function get_icon() {
$icon = '';
// specific icon
if ( $this->icon ) {
// use icon provided by filter
$icon = sprintf( '<img src="%s" alt="%s" class="sv-wc-payment-gateway-icon wc-%s-payment-gateway-icon" />', esc_url( \WC_HTTPS::force_https_url( $this->icon ) ), esc_attr( $this->get_title() ), esc_attr( $this->get_id_dasherized() ) );
}
// credit card images
if ( ! $icon && $this->supports_card_types() && $this->get_card_types() ) {
// display icons for the selected card types
foreach ( $this->get_card_types() as $card_type ) {
$card_type = SV_WC_Payment_Gateway_Helper::normalize_card_type( $card_type );
if ( $url = $this->get_payment_method_image_url( $card_type ) ) {
$icon .= sprintf( '<img src="%s" alt="%s" class="sv-wc-payment-gateway-icon wc-%s-payment-gateway-icon" width="40" height="25" style="width: 40px; height: 25px;" />', esc_url( $url ), esc_attr( $card_type ), esc_attr( $this->get_id_dasherized() ) );
}
}
}
// echeck image
if ( ! $icon && $this->is_echeck_gateway() ) {
if ( $url = $this->get_payment_method_image_url( 'echeck' ) ) {
$icon .= sprintf( '<img src="%s" alt="%s" class="sv-wc-payment-gateway-icon wc-%s-payment-gateway-icon" width="40" height="25" style="width: 40px; height: 25px;" />', esc_url( $url ), esc_attr( 'echeck' ), esc_attr( $this->get_id_dasherized() ) );
}
}
/* This filter is documented in WC core */
return apply_filters( 'woocommerce_gateway_icon', $icon, $this->get_id() );
}
et voici comment ils ont mis l'icône Paypal:
public function get_icon() {
// from https://www.Paypal.com/webapps/mpp/logos-buttons
$icon_html = '<img src="https://www.paypalobjects.com/webstatic/en_US/i/buttons/PP_logo_h_100x26.png" alt="Paypal" />';
return apply_filters( 'woocommerce_gateway_icon', $icon_html, $this->get_id() );
}
J'espère que c'est plus clair. Merci