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 Twitter và Facebook
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