Erstellen Sie einen Filter in functions.php

Ich möchte einen Filter in meinem functions.php Theme erstellen, um die URL von $ icon_html in dieser Plugin function zu ändern.

public function get_icon() { // paypal icon $icon_html = ''; return apply_filters( 'woocommerce_gateway_icon', $icon_html, $this->get_id() ); } 

Wie führe ich das durch? $ icon_html ist nicht eindeutig.

Danke, Thibault

Solutions Collecting From Web of "Erstellen Sie einen Filter in functions.php"

Immer wenn Sie apply_filters( 'filter_name', $value ) , können Sie add_filter() , um den Wert von $value zu ersetzen oder zu ändern:

 add_filter( 'filter_name', 'callback_function' ); 

Wobei callback_function eine von Ihnen erstellte function ist. Diese function akzeptiert $value als Argument und muss einen neuen Wert zurückgeben. Also für dein Beispiel wird das so aussehen:

 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 ); 

Ich möchte das PayPal-Symbol aktualisieren:

Bildbeschreibung hier eingeben

Hier, wie sie die Kreditkarten-Icons setzen:

 /** * 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( 'http://img.daswordpress.com/functions/%s', 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( 'http://img.daswordpress.com/functions/%s', 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( 'http://img.daswordpress.com/functions/%s', 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() ); } 

und hier, wie sie das Paypal Icon setzen:

 public function get_icon() { // from https://www.paypal.com/webapps/mpp/logos-buttons $icon_html = 'PayPal'; return apply_filters( 'woocommerce_gateway_icon', $icon_html, $this->get_id() ); } 

Hoffe, das ist klarer. Vielen Dank