Home WordpressWordPress cơ bản Khám phá cấu trúc URL – WordPress Rewrite Rules

Khám phá cấu trúc URL – WordPress Rewrite Rules

by admincp

Nếu bạn đã từng sử dụng các chức năng viết lại đường dẫn URL (Rewrite Rules) của WordPress, bạn sẽ muốn hiểu quy trình viết lại URL và debug để biết lý do bạn đang mắc phải. Trong quá trình làm việc với khách hàng, chúng tôi đã đối mặt trong vấn đề viết lại URL cho sản phẩm & bài viết WordPress. Đây là lý do mà mình viết bài chia sẻ này cho những ai đang tùy biến WordPress. Trong ví dụ sau mình có tạo ra chức năng in ra một danh sách tất cả các quy tắc viết lại URL hiện tại (theo thứ tự) và nêu bật quy tắc nào phù hợp với chế độ xem hiện tại.

Bạn có thể chèn đoạn mã dưới đây vào file functions.php trong thư mục giao diện WordPress hiện tại của bạn.

function jp_debug_rewrite_rules($where="head") {
    // only do this on public side
    if( is_admin() ) return false;

    switch($where) {
        case 'foot' :
            $filter="wp_before_admin_bar_render";
            break;
        case 'footer' :
            $filter="wp_before_admin_bar_render";
            break;
        default :
            $filter="get_header";
            break;
    }

    add_filter($filter,function(){
    global $wp_rewrite, $wp, $template;

    if (!empty($wp_rewrite->rules)) { ?>

        <style>h5{background:#000!important;color:#fff!important;padding:1em!important;margin:1em!important}table{margin:1em!important}table td{border:1px solid silver;padding:5px}tr.matchedrule td{border-color:transparent}tr.matchedrule>td{background:HSLA(52,96%,67%,1)}tr.matchedrule+tr.matchedrule>td{background:HSLA(52,96%,67%,.5)}tr.matchedrule table td+td{font-weight:700}</style>

        <h5>Rewrite Rules</h5>
        <table>
            <thead>
                <tr>
                    <td>
                    <td>Rule
                    <td>Rewrite
                </tr>
            </thead>
            <tbody>
        <?php
        $i = 1;
        foreach ($wp_rewrite->rules as $name => $value) {
            if( $name == $wp->matched_rule ) {

                echo '<tr class="matchedrule">
                    <td>' . $i . '
                    <td>'.$name.'
                    <td>' . $value . '
                    </tr>
                    <tr class="matchedrule">
                    <td colspan="3">
                        <table>
                            <tr><td>Request
                                <td>' . $wp->request . '
                            <tr><td>Matched Rewrite Query
                                <td title="'.urldecode($wp->matched_query).'">' . $wp->matched_query . '
                            <tr><td>Loaded template
                                <td>'. basename($template) . '
                        </table>
                    </td>
                    </tr>';

            } else {
                echo '<tr>
                    <td>'.$i.'
                    <td>'.$name.'
                    <td>'.$value.'
                  </tr>';
            }
            $i++;
        }
        ?>
            </tbody>
        </table>

    <?php

    }
    });
}

Để gỡ lỗi URL, bạn sử dụng hàm jake_debug_rewrite_rules(). Chúc bạn thành công!

Nếu bạn thấy bài viết này hữu ích, hãy chia sẻ với bạn bè bằng cách nhấn nút chia sẻ ở bên dưới. Theo dõi chúng tôi trên TwitterFacebook

Liên hệ

Công ty chuyên Thiết kế website uy tín nhất Miền Bắc: http://vinastar.net

Hotline tư vấn: 0989 48 3456

Nguồn: Sưu tầm trên internet

You may also like

Leave a Comment