web-dev-qa-db-ja.com

私のカスタムプラグインでcreate関数を使用したいのですが WP 別のヘッダーを使用する

私はこのために子供のテーマを使うことをよく知っています。私はget_header($ name)について知っています。コンディショナルタグの使い方はすでに理解しています。

プラグインからこの機能を削除したいです。

function get_header( $name = null ) {
do_action( 'get_header', $name );
$templates = array();
if ( isset($name) )
templates[] = "header-{$name}.php";
$templates[] = 'header.php';
// Backward compat code will be removed in a future release
if ('' == locate_template($templates, true))
load_template( ABSPATH . WPINC . '/theme-compat/header.php');
}

そしてget_header()を次のように置き換えます。

function get_header( $name = null ) {
do_action( 'get_header', $name );
$templates = array();
if ( isset($name) )
templates[] = "header-{$name}.php";
$templates[] = 'header.php';
// Backward compat code will be removed in a future release
if ('' == locate_template($templates, true))
load_template( MY PLUGIN PATH/header.php');
}

php.netはrunkit_function_remove()を使うように私に言ったが、私が取り組んでいるウェブサイトはこれが未定義の関数であると言います。

どんな助けでも大いに感謝されるでしょう。

レオン

私があなたがやりたいことが実行可能であるかどうかわからない(私には不可能に思えるが、誰かがそれをするまですべてが不可能に思える)。私は非常に醜い回避策を考えました。

add_filter( 'template_include', function( $template ) {
    $temp = get_temp_dir() . basename( $template );
    file_put_contents( $temp, str_replace( 'get_header(', 'get_header2(', file_get_contents( $template ) ) );
    return $temp;
});

function get_header2( $name = null ) {
    do_action( 'get_header', $name );

    $templates = array();
    if ( isset($name) )
        $templates[] = "header-{$name}.php";

    $templates[] = 'header.php';

    // Backward compat code will be removed in a future release
    if ('' == locate_template($templates, true))
        load_template( MY PLUGIN PATH/header.php');
}

これは、ロードする前にすべてのテンプレートでget_headerをget_header2に置き換えます。

1
user27457