Bagaimana saya bisa mendapatkan parameter nama yang didefinisikan di get_header?

8

Misalnya, pada halaman blog saya yang saya gunakan get_header('blog');, tetapi saya tidak ingin membuat template header baru yang disebut header-blog.php , karena saya hanya ingin membuat sedikit penyesuaian. Apakah mungkin mendapatkan parameter nama ini di file header.php saya ?

passatgt
sumber

Jawaban:

7

Ada tindakan get_headeryang bisa Anda gunakan. Dalam tema Anda functions.php, daftarkan panggilan balik untuk tindakan itu:

add_action( 'get_header', function( $name ) {
    add_filter( 'current_header', function() use ( $name ) {
        // always return the same type, unlike WP
        return (string) $name;
    });
});

Anda juga bisa menulis kelas pembantu kecil yang dapat Anda gunakan kembali:

class Template_Data {

    private $name;

    public function __construct( $name ) {

        $this->name = (string) $name;
    }

    public function name() {

        return $this->name;
    }
}

add_action( 'get_header', function( $name ) {
    add_filter( 'current_header', [ new Template_Data( $name ), 'name' ] );
});

Di Anda header.php, Anda mendapatkan bagian / nama saat ini dengan:

$current_part = apply_filters( 'current_header', '' );

Anda dapat melakukan hal yang sama dengan get_footer, get_sidebardan get_template_part_{$slug}.

fuxia
sumber