In tên tệp mẫu WordPress để gỡ lỗi


8

Tôi đã đảm nhận việc duy trì một trang web lớn do WP-MS cung cấp. Trang web có ~ 200 mẫu, nhiều trang cụ thể và không có quy trình đặt tên tiêu chuẩn.

Sẽ tiết kiệm rất nhiều thời gian nếu trong khi lướt qua trang web, tôi có thể thấy tên mẫu tạo nên trang hiện tại. Điều này có thể không? Tôi đã xem xét các plugin gỡ lỗi cho WordPress, nhưng chúng dường như hướng đến các biến và truy vấn SQL, không phải mẫu.

Câu trả lời:


5

đây cũng là một cách nhanh chóng;

<!--

<?php print_r( debug_backtrace() ) ?>

-->

dán nó ngay trước thẻ đóng


2
Trong thử nghiệm, điều này đáng tin cậy hơn mã @ kaiser, vì nó hoạt động trên các trang và bài đăng; nhưng nó cũng khó hiểu hơn rất nhiều để đọc :)
PeterB

3

Các chức năng sau đây làm 3 việc:

  • Hiển thị phân cấp mẫu cho các yêu cầu hiện tại
  • Hiển thị chủ đề đang sử dụng (2 cách để hiểu điều này được hiển thị)
  • Hiển thị mẫu hiện tại được sử dụng cho yêu cầu *)

*) Đính kèm nó vào bộ lọc nội dung. Bạn có thể cần chơi với điều kiện hoặc khả năng tùy thuộc vào vai trò của bạn. Cho đến nay tôi không biết một giải pháp để hiển thị mẫu trang cho tài liệu lưu trữ và các yêu cầu xem danh sách tương tự.

// That's not that easy to read:
var_dump( get_required_files() );

/** 
 * Show template hierarchy and theme at the end of the request/page.
 * @return void
 */
function wpse31909_template_info()
{
        // Don't display for non-admin users
        if ( ! current_user_can( 'manage_options' ) )
            return;

        // You have to build yourself the hierarchy here or somewhere in front of the fn
        global $wp_template_hierarchy;

        $content  = '<pre>';
            // Show template hierarchy
            $content .= "TEMPLATE HIERARCHY\n==================\n";
            $content .= var_export( $wp_template_hierarchy, true );

            // Show current theme in use:
            $content .= "\n\nCURRENT THEME\n=============\n";
            $content .= var_export( get_option( 'template' ), true );
            // or: 
            # $content .= var_export( get_template(), true );
        $content .= '</pre>';

        return print $content;
}
add_action( 'shutdown', 'wpse31909_template_info' );


/**
 * Show template on singular views attached to the end of the content for admins
 * @return $content
 */
function wpse31909_template_to_content( $content )
{
        // Display standard content for non-admin users and not single post/page/cpt/attachment view.
        if ( ! current_user_can( 'manage_options' ) && ! is_singular() )
            return $content;

        $content .= '<pre>';
            // Show current template in use: Must be in the loop to get the global $post
           $content .= var_export( get_post_meta( $GLOBALS['post']->ID, '_wp_page_template' ), true );
        $content .= '</pre>';

        return $content;
}
add_filter( 'the_content', 'wpse31909_template_to_content' );

Có lẽ nó có thể hoạt động nếu bạn cũng gắn chức năng thứ hai vào the_excerptbộ lọc. Đoán nó sau đó cũng sẽ hiển thị trên danh sách lượt xem. @ ALL Hãy thoải mái chỉnh sửa & mở rộng câu trả lời này.
kaiser

1
Có một lỗi đánh máy với biến đầu tiên var_dump.
t31os

@ t31os Đừng muốn sửa nó? Mang lại +2 điểm rep trên mỗi upvote. Dù sao cũng cảm ơn :)
kaiser

Không phải là quá nhiều, nhiều hơn là một quan sát lái xe ..;)
t31os

@ t31os Một cái khá tốt. Vui mừng vì nó không phải là "fitler" thay vì "bộ lọc";)
kaiser

2

Tôi sử dụng điều này để chỉ in tên tệp mẫu ở đầu trang cho mục đích gỡ lỗi.

// Để gỡ lỗi - hiển thị tệp mẫu
add_action ('wp_head', 'show_template');
hàm show_template () {
    mẫu $ toàn cầu;
    print_r (mẫu $);
}

-1

Mặc dù không trực tiếp trả lời cho câu hỏi trong tay, nhưng có lẽ cũng cần lưu ý ở đây rằng mặc định WordPress thêm tên lớp vào <body>thẻ cho các mẫu trang tùy chỉnh. Vì vậy, ví dụ, nếu bạn đang xem một trang có mẫu trang tùy chỉnh và tên tệp của mẫu là custom.php, thì tên lớp page-template-customsẽ được thêm vào <body>thẻ.

Tài liệu về tính năng này có thể được tìm thấy ở đây: https://codex.wordpress.org/Function_Reference/body_group#Page

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.