Làm thế nào tôi có thể nhận được tham số tên được xác định trong get_header?


8

Ví dụ: trên các trang blog của tôi, tôi sử dụng get_header('blog');, nhưng tôi không muốn tạo một mẫu tiêu đề mới có tên là tiêu đề-blog.php , vì tôi chỉ muốn thực hiện một điều chỉnh nhỏ. Có thể bằng cách nào đó có được tham số tên này trong tệp header.php của tôi ?

Câu trả lời:


7

Có một hành động get_headermà bạn có thể sử dụng. Trong chủ đề của bạn functions.php, hãy đăng ký gọi lại cho hành động đó:

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

Bạn cũng có thể viết một lớp trợ giúp nhỏ mà bạn có thể sử dụng lại:

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

Trong của bạn header.php, bạn có được phần / tên hiện tại với:

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

Bạn có thể làm tương tự với get_footer, get_sidebarvà get_template_part_{$slug}.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.