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_sidebarget_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 cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.