Hoàng Web

Thiết Kế Website WordPress

  • Kho giao diện
  • Dịch Vụ
    • Thiết kế web giá rẻ
    • Thiết kế website WordPress
    • Hosting Miễn Phí 100GB
    • Tích hợp thanh toán MoMo, ViettelPay, Vietcombank, MB..
    • Tối ưu Google PageSpeed
    • Sửa lỗi nâng cấp website
    • Viết plugin WordPress
    • Code Tool theo yêu cầu
  • Bảng giá
  • Quy trình làm việc
  • Giới thiệu
  • Liên Lạc
Trang chủ » Wordpress » Debug wordpress rewrite rules

Debug wordpress rewrite rules

Thứ Năm, 03/07/2014 by Hoàng Quách

  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

Viết lại đường dẫn wordpress (rewrite) được các web developer rất chú trọng, nhưng cần đòi hỏi kỹ năng về regular expression. Trong bài hôm nay mình xin giới thiệu một vài đoạn code để gỡ lỗi wordpress rewrite.
wordpress rewrite rules

Simple explore wordpress rewrite bug

Sao chép các đoạn code sau vào theme’ functions.php

//debug rewrite
function debug_rewrite() {
	global $wp, $wp_rewrite;
 
	if ( !current_user_can( 'manage_options' ) )
		return;
 
	echo "< pre>";
	var_dump( $wp->matched_rule );
	print_r( $wp_rewrite );
	echo "< \/pre>";
}
add_action( 'template_redirect', 'debug_rewrite' );

– Print all rewrite rules

function dev4press_debug_rewrite_rules() {
  global $wp_rewrite;
  echo '<div>';
  if (!empty($wp_rewrite->rules)) {
    echo '<h5>Rewrite Rules</h5>';
    echo '<table><thead><tr>';
    echo '<td>Rule</td><td>Rewrite</td>';
    echo '</tr></thead><tbody>';
    foreach ($wp_rewrite->rules as $name => $value) {
      echo '<tr><td>'.$name.'</td><td>'.$value.'</td></tr>';
    }
    echo '</tbody></table>';
  } else {
    echo 'No rules defined.';
  }
  echo '</div>';
}
//

Có thể đặt hàm này ở header.php để tìm lỗi rewrite

dev4press_debug_rewrite_rules();

Hàm sau đây cũng tương tự dùng để print rewrite bugs

//debug
function dev4press_debug_page_request() {
  global $wp, $template;
  define("D4P_EOL", "rn");
 
  echo '<!-- Request: ';
  echo empty($wp->request) ? "None" : esc_html($wp->request);
  echo ' -->'.D4P_EOL;
  echo '<!-- Matched Rewrite Rule: ';
  echo empty($wp->matched_rule) ? None : esc_html($wp->matched_rule);
  echo ' -->'.D4P_EOL;
  echo '<!-- Matched Rewrite Query: ';
  echo empty($wp->matched_query) ? "None" : esc_html($wp->matched_query);
  echo ' -->'.D4P_EOL;
  echo '<!-- Loaded Template: ';
  echo basename($template);
  echo ' -->'.D4P_EOL;
}

debugging permalink issues

Produces a dump on the state of WordPress when a not found error occurs. Useful when debugging permalink issues, rewrite rule trouble, place inside functions.php

ini_set( 'error_reporting', -1 );
ini_set( 'display_errors', 'On' );
 
echo '< pre>';
 
add_action( 'parse_request', 'debug_404_rewrite_dump' );
function debug_404_rewrite_dump( &$wp ) {
    global $wp_rewrite;
 
    echo '<h2>rewrite rules</h2>';
    echo var_export( $wp_rewrite->wp_rewrite_rules(), true );
 
    echo '<h2>permalink structure</h2>';
    echo var_export( $wp_rewrite->permalink_structure, true );
 
    echo '<h2>page permastruct</h2>';
    echo var_export( $wp_rewrite->get_page_permastruct(), true );
 
    echo '<h2>matched rule and query</h2>';
    echo var_export( $wp->matched_rule, true );
 
    echo '<h2>matched query</h2>';
    echo var_export( $wp->matched_query, true );
 
    echo '<h2>request</h2>';
    echo var_export( $wp->request, true );
 
    global $wp_the_query;
    echo '<h2>the query</h2>';
    echo var_export( $wp_the_query, true );
}
add_action( 'template_redirect', 'debug_404_template_redirect', 99999 );
function debug_404_template_redirect() {
    global $wp_filter;
    echo '<h2>template redirect filters</h2>';
    echo var_export( $wp_filter[current_filter()], true );
}
add_filter ( 'template_include', 'debug_404_template_dump' );
function debug_404_template_dump( $template ) { 
    echo '<h2>template file selected</h2>';
    echo var_export( $template, true );
 
    echo '< \/pre>';
    exit();
}
//or call this
function dev4press_debug_page_request() {
  global $wp, $template;
  define("D4P_EOL", "rn");
 
  echo '<!-- Request: ';
  echo empty($wp->request) ? "None" : esc_html($wp->request);
  echo ' -->'.D4P_EOL;
  echo '<!-- Matched Rewrite Rule: ';
  echo empty($wp->matched_rule) ? None : esc_html($wp->matched_rule);
  echo ' -->'.D4P_EOL;
  echo '<!-- Matched Rewrite Query: ';
  echo empty($wp->matched_query) ? "None" : esc_html($wp->matched_query);
  echo ' -->'.D4P_EOL;
  echo '<!-- Loaded Template: ';
  echo basename($template);
  echo ' -->'.D4P_EOL;
}

Có 1 Plugin bạn nên tham khảo là “Monkeyman Rewrite Analyzer” dùng công cụ này để test rewrite rules matching rất ok, mình thấy công cụ này rất tuyệt vời.
Monkeyman Rewrite Analyzer - hoangweb.com
Sử dụng thêm công cụ regular expression online tool:
http://regexpal.com/
http://www.regexr.com/

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

  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

Chuyên mục: Wordpress Tìm kiếm: rewrite, wordpress debug

Tôi giúp gì cho bạn?

HOÀNG WEB

Địa chỉ: Tây Sơn, Phường Quang Trung, Quận Đống Đa, Hà Nội

Hotline: 0987 342 124 – 0868 292 303 (8h:00 – 21h:00)

Email: [email protected]

Website: www.hoangweb.com

KẾT NỐI VỚI TÔI

  • Facebook
  • GitHub
  • YouTube

SẢN PHẨM

  • Plugin Thanh Toán Quét Mã QR Code Tự Động
  • WP2Speed – Tối ưu Google Speed
  • 23WebHost – Hosting Miễn Phí 100GB

LIÊN KẾT

  • Có nên thuê thiết kế website giá rẻ?
  • Hướng dẫn thanh toán
  • Chính sách hoàn tiền
  • Trung tâm hỗ trợ

Copyright © 2023 | All rights reserved | HOANG WEB
Mọi hình thức sao chép nội dung trên website này mà chưa được sự đồng ý đều là trái phép.