Tự động get_header và get_footer trên mọi mẫu?


7

Có cách nào để tự động chạy get_header()ở đầu mẫu và get_footer()ở cuối mẫu không?

Hiện tại mã của tôi quá lặp đi lặp lại với những cuộc gọi đó.

Tôi đã tìm kiếm một cách để làm điều này, nhưng tôi không thể tìm thấy nó trong Google.


2
Gọi get_header()get_footer()trực tiếp là cách thích hợp để làm điều đó trong các mẫu của bạn.
Pieter Goosen

1
@PieterGoosen Tôi thấy, nếu đó là cách được đề xuất tôi đoán tôi nên sống với nó. Chỉ là có get_header()trên mỗi tệp mẫu duy nhất có vẻ không sạch.
hoursetyono

Câu trả lời:


11

Nhìn vào wp-includes/template-loader.phpcó vẻ như có một cách:

if ( $template = apply_filters( 'template_include', $template ) )
    include( $template );

Bạn có thể nối vào bộ lọc đó, xử lý bao gồm trong hàm gọi lại và trả về FALSE.

Mã mẫu, không được kiểm tra:

add_filter( 'template_include', function( $template ) {

    get_header();
    include $template;
    get_footer();

    return FALSE;
});

Bạn là đàn ông! Điều này nên là tiêu chuẩn! THANKS A LÔ
hoursetyono

@DarcCode: Tôi đồng ý rằng các lệnh gọi hàm này sẽ tự động hơn nhưng, trong khi điều này có thể phù hợp với bạn, nó sẽ hạn chế tính linh hoạt của các tệp mẫu riêng lẻ - nghĩa là không thể thêm mã trước get_header() vào tệp mẫu, đôi khi khá thuận tiện.
s_ha_dum

Đúng là tôi vẫn đang học wordpress, vì vậy tôi chưa tạo ra trang web phức tạp nào. Nhưng trong trường hợp nào bạn cần đặt mã trước get_header?
hoursetyono

1
Tôi đã không thấy nhiều trường hợp sử dụng cho công cụ trước khi tiêu đề, tuy nhiên các hàm này chấp nhận đối số tên tiêu đề / chân trang để tải các tiêu đề khác nhau , có thể được yêu cầu rất nhiều trong các trang web phức tạp hơn.
Hết

@Rarst đó là một điểm tốt để đề cập ... Ví dụ hiện tại bị hạn chế về tính linh hoạt, bạn có thể mở rộng thêm bộ lọc của riêng mình để tùy ý chuyển vào tiêu đề ($ params) / footer ($ params).
Adam

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.