web-dev-qa-db-ja.com

子テーマから親テーマヘルパークラス関数へのadd_filter

子テーマから見出しタグを変更したいのですが、親テーマの機能にフィルターを追加する方法がわかりません。

変更したい親テーマ関数:

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

デフォルトのtitle_tag値を 'span'にします。

1
Çağrı Çolak

フィルターはありません。値をフィルタするために、開発者はapply_filters()への呼び出しでフィルタ可能な値をそのフィルタの名前でラップすることによってフィルタを作成する必要があります。彼らはそれをしていません。

彼らが持っていることWpkPageHelperクラスをプラグイン可能にすることです。これは、子テーマがクラス全体を置き換えることが可能であることを意味します。

WpkPageHelperクラスを定義する前に、親テーマはif(! class_exists('WpkPageHelper')) {をチェックしています。これは、クラスがすでに定義されているかどうかを確認し、定義されていない場合にのみクラスを定義します。子テーマは親テーマの前にロードされるので、これは親テーマの前にWpkPageHelperを定義する機会を与えます。その後、親テーマはあなたのバージョンを使用します。

だからあなたがする必要があるのはあなたの子テーマのfunctions.phpファイル(またはあなたの子テーマの関数ファイルに含まれる別のファイル)にWpkPageHelperクラスのコードをコピーしてあなたが望む変更を加えることだけです。 class_exists()チェックを省略してください。

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

これがWordPressといくつかのテーマとプラグインがクラスと関数の定義を条件付きステートメントでラップするときの動作です。あなたは時々if ( ! function_exists( 'function_name' ) ) {のような条件を見るでしょう。これはWordPressまたはテーマ/プラグインであり、WordPressまたはテーマ/プラグインが独自に使用するために、開発者にこれらの関数またはクラスの独自バージョンを定義する機会を与えます。

0
Jacob Peattie