0

こんにちは、これはおそらく明白なものだと思いますが、デフォルトの関数の代わりに functions.php で作成する独自の関数をどのように使用すればよいか疑問に思っています。

私が何をしたかを説明するために、wp-includes/general-templates.php に移動し、その周りの多くのコードを変更しましたget_calendar

しかし、オンラインでさらに読むと、ユーザーが新しいワードプレスに更新するとすぐにこれらの行が上書きされる可能性があるため、これを行うべきではないことに気付きました。

元の general-templates.php ファイルのコピーを保持しました。それで、general-templates.php にある関数の代わりに、新しく更新された関数をどのように実装すればよいのでしょうか?

ありがとうございました

4

1 に答える 1

4

WordPress は、デフォルトの関数出力をオーバーライドするための 2 つの異なる手段を提供します:プラグ可能な関数フィルターです。

プラガブル関数

プラグ可能な関数(すべて に存在するpluggable.php) は、次の形式を取ります。

if ( ! function_exists( 'some_function' ) ) {
    function some_function() {
        // function code goes here
    }
}

プラグ可能な関数をオーバーライドするには、独自のプラグイン (またはfunctions.php該当する場合はテーマのファイル) で定義するだけです。

function some_function() {
    // Your custom code goes here
}

フィルター

フィルタは次の形式を取ります。

function some_function() {
    // function code goes here
    return apply_filters( 'some_function', $output );
}

フィルターをオーバーライドするには、コールバックを定義してフィルターに追加します。

function mytheme_filter_some_function( $output ) {
    // Define your custom output here
    return $output;
}
add_filter( 'some_function', 'mytheme_filter_some_function' );

具体的にはget_calendar()

sourceを見ると、出力がフィルターget_calendar()を通過していることがわかります。get_calendar

return apply_filters( 'get_calendar',  $calendar_output );

したがって、変更する独自のコールバックを記述し、$calendar_outputそれを にフックするだけget_calendarです。

function mytheme_filter_get_calendar( $calendar_output ) {
    // Define your custom calendar output here
    $calendar_output = '';
    // Now return it
    return $calendar_output;
}
add_filter( 'get_calendar', 'mytheme_filter_get_calendar' );
于 2012-11-26T17:09:05.193 に答える