it-swarm.com.de

add_filter to parent theme Hilfsklassenfunktion vom untergeordneten Thema

Ich möchte Überschriften-Tags aus dem untergeordneten Thema ändern, kann aber nicht herausfinden, wie Filter zur Funktion des übergeordneten Themas hinzugefügt werden.

Übergeordnete Themenfunktion, die ich ändern möchte:

if(! class_exists('WpkPageHelper')) {
class WpkPageHelper
{
    public static function zn_get_subheader( $args = array(), $is_pb_element = false )
    {
        $config = zn_get_pb_template_config();
        self::render_sub_header( $args );
    }

    public static function render_sub_header( $args = array() )
    {
        $defaults = array(
            'title_tag' => 'h2'
        );
    }   
}
}

Ich möchte, dass der Standardwert für title_tag 'span' ist.

1
Çağrı Çolak

Es gibt keinen Filter. Um einen Wert zu filtern, muss der Entwickler einen Filter erstellen, indem er den filterbaren Wert in einen Aufruf von apply_filters() mit einem Namen für diesen Filter einschließt. Das haben sie nicht getan.

Was siegemacht habenist die Klasse WpkPageHelperpluggable. Dies bedeutet, dass ein untergeordnetes Thema die gesamte Klasse ersetzen kann.

Vor dem Definieren der Klasse WpkPageHelper überprüft das übergeordnete Thema if(! class_exists('WpkPageHelper')) {. Dies prüft, ob die Klasse bereits definiert wurde und definiert die Klasse nur, wenn dies nicht der Fall ist. Da untergeordnete Themen vor übergeordneten Themen geladen werden, haben Sie die Möglichkeit, WpkPageHelper vor dem übergeordneten Thema zu definieren. Das übergeordnete Thema verwendet dann Ihre Version.

Kopieren Sie den Code für die Klasse WpkPageHelper in die Datei functions.php Ihres untergeordneten Themas (oder in eine andere Datei, die in der Funktionsdatei Ihres untergeordneten Themas enthalten ist) und nehmen Sie die gewünschten Änderungen vor. Lass einfach die class_exists() Prüfung weg:

class WpkPageHelper
{
    public static function zn_get_subheader( $args = array(), $is_pb_element = false )
    {
        $config = zn_get_pb_template_config();
        self::render_sub_header( $args );
    }

    public static function render_sub_header( $args = array() )
    {
        $defaults = array(
            'title_tag' => 'span'
        );
    }   
}

Dies ist, was WordPress und einige Themes und Plugins tun, wenn sie Klassen- und Funktionsdefinitionen in bedingte Anweisungen einschließen. Sie werden gelegentlich Bedingungen wie if ( ! function_exists( 'function_name' ) ) { sehen. Dies ist WordPress oder das Theme/Plugin, mit dem Entwickler ihre eigenen Versionen dieser Funktionen oder Klassen für WordPress oder das Theme/Plugin definieren können.

0
Jacob Peattie