Viết lại URL trong Mẹo và Plugin WordPress
Các bản cập nhật mới nhất cho WordPress đã cho phép các nhà phát triển tùy chỉnh trang web cá nhân của họ rất nhanh. Thật đơn giản để cập nhật các khu vực trong chủ đề của bạn, thay thế các widget trong thanh bên và thậm chí viết các hàm mã PHP tùy chỉnh của riêng bạn. Sự mở rộng là rất lớn - và một lĩnh vực phổ biến đang viết lại các permalinks URL đẹp.
Có một vài phương pháp bạn có thể sử dụng để cập nhật hệ thống viết lại mặc định của WordPress. Trong hướng dẫn này, tôi sẽ chia sẻ một vài ví dụ và chứng minh quy trình có thể đơn giản như thế nào. Bạn sẽ cần một số hiểu biết về PHP để theo dõi những gì đang diễn ra trong mã, nhưng thật dễ dàng để sao chép và dán vào mẫu của riêng bạn, thực tế không có công việc nào liên quan.
Hiểu WP_Rewrite
Nếu bạn hoàn toàn quen thuộc với mod_rewrite trên các máy chủ Apache thì bạn sẽ chọn cú pháp viết lại WordPress. Hệ thống của họ vẫn được xây dựng trên đỉnh .htaccess tệp, nhưng tất cả các quy tắc được mã hóa trong PHP. Điều này thực sự làm cho quá trình dễ dàng hơn một chút vì chúng tôi có nhiều quyền kiểm soát hơn khi viết URL của riêng mình.
Tôi khuyên bạn nên lướt qua trang lớp $ wp_rewrite vì nó có hàng tấn thông tin về chủ đề này. Thậm chí có những ví dụ nhỏ mà chúng ta có thể tham khảo để làm cho mọi thứ dễ hiểu hơn. Hầu hết các mã có thể được viết trực tiếp vào chủ đề của bạn Hàm.php tập tin. Hãy bắt đầu bằng cách xem các bản viết lại mặc định đã có trong WordPress.
Nội dung của quy tắc $ wp_rewrite->
Bằng cách tuyên bố $ wp_rewrite
lớp là toàn cầu, chúng tôi có quyền truy cập vào tất cả các dữ liệu nội bộ. Khi bạn đi để chắp thêm các quy tắc của riêng bạn, các quy tắc này được thêm vào một mảng với tên $ wp_rewrite-> quy tắc
. Điều quan trọng cần nhớ là biến này vì có thể bạn sẽ cần tham chiếu dữ liệu nhiều lần trong quá trình phát triển.
quy tắc); ?>
Tôi đã thêm khối mã này vào chủ đề của mình trang.php tập tin. Nó sẽ tạo ra một mảng lớn dữ liệu trông giống như một mớ hỗn độn lớn. Nhưng nếu bạn Xem nguồn trên trang của bạn thực sự dễ dàng để xem quy tắc viết lại nào khớp với tên tệp nào. Ví dụ: chúng ta hãy xem các quy tắc để viết lại danh mục:
[danh mục /(.+?)/?$] => index.php? category_name = $ khớp [1]
Bit ở phía bên trái trong ngoặc là Apache RewriteRule của chúng tôi để tìm kiếm. Bắt đầu với phần /thể loại/ theo sau là bất kỳ chuỗi ký tự nào. Nếu điều này phù hợp thì máy chủ biết tham chiếu index.php? category_name =
trong khi thay thế biến ở cuối.
Đặt Permalinks tùy chỉnh
Có quá nhiều nội dung để đi qua trong lớp $ wp_rewrite. Nhiều thuộc tính khác có thể được tham chiếu, chẳng hạn như $ wp_rewrite-> category_base
hoặc là $ wp_rewrite-> tác giả_base
để kéo các cấu trúc URL mặc định cho các trang này. Nhưng ngoài việc lấy các cài đặt mặc định của WP, chúng ta cũng có thể xây dựng các quy tắc của riêng mình.
Xây dựng lại cơ sở tác giả
Khi bạn vào trang cài đặt Permalinks, bạn có tùy chọn đặt lại cơ sở danh mục và thẻ. Tuy nhiên, tùy chọn để thiết lập lại cơ sở tác giả của bạn bị thiếu một cách kỳ lạ.
Nhưng chúng ta có thể sử dụng add_rewrite_rule ()
từ codex của WordPress để tích hợp một số cài đặt mới. Trong trường hợp này tôi đã thay thế / tác giả / với /nhà văn/ nhưng bạn có thể sử dụng bất cứ cơ sở nào bạn thích. Ngoài ra, tôi đã sao chép một số chuyển hướng khác cho các trang tác giả và nguồn cấp RSS. Bạn có thể thêm khối mã này vào tệp tin.php của chủ đề.
add_action ('init', 'add_ Author_rules'); hàm add_ Author_rules () add_rewrite_rule ("nhà văn / ([^ /] +) /?", "index.php? Author_name = $ khớp [1]", "top"); add_rewrite_rule ("nhà văn / ([^ /] +) / page /? ([0-9] 1,) /?", "index.php? Author_name = $ khớp [1] & paged = $ khớp [2] ", "hàng đầu"); add_rewrite_rule ("nhà văn / ([^ /] +) / (feed | rdf | rss | rss2 | nguyên tử) /?", "index.php? Author_name = $ khớp [1] & feed = $ khớp với [2]", " hàng đầu"); add_rewrite_rule ("nhà văn / ([^ /] +) / feed / (feed | rdf | rss | rss2 | nguyên tử) /?", "index.php? Author_name = $ khớp [1] & feed = $ khớp [2]" , "hàng đầu");
Hàm này có thể được truy cập ngay cả khi không sử dụng biến $ wp_rewrite. Một số nhà phát triển thích phương pháp này vì nó đơn giản hơn mã hóa cứng với các thuộc tính lớp. Tuy nhiên, tôi cũng nhận thấy phương pháp này không phải lúc nào cũng đáng tin cậy cho một số cài đặt WordPress. Thực sự có một tùy chọn thứ hai để thêm các quy tắc này vào hook sau khi xóa .htaccess của bạn (xem bên dưới).
Cơ sở tác giả sử dụng Gener_rewrite_rules
Viết cho phương thức này một lần nữa chúng ta sẽ cần lớp $ wp_rewrite toàn cầu. Sau đó tôi đã thiết lập một biến mới có tên $ new_rules
trong đó có một mảng kết hợp của dữ liệu. Mã ví dụ của tôi dưới đây chỉ viết lại cho phần trang tác giả cơ bản.
hàm created_ Author_rewrite_rules () global $ wp_rewrite; $ new_rules = mảng ("nhà văn / ([^ /] +) /?" => "index.php? Author_name =". $ wp_rewrite-> preg_index (1)); $ wp_rewrite-> quy tắc = $ new_rules + $ wp_rewrite-> quy tắc;
Nhưng nếu chúng tôi muốn bao gồm nhiều trang và nguồn cấp RSS, chúng tôi có thể tăng cường mảng. Bạn có tùy chọn tạo một hàm PHP để đẩy dữ liệu mảng kết hợp có thể hơi phức tạp. Chúng ta cũng có thể phân chia các khối dữ liệu thông qua dấu phẩy, hoạt động như các thực thể riêng biệt trong mảng. Kiểm tra mã cập nhật của tôi một lần nữa được viết trong tệp chủ đề Hàm.php.
hàm created_ Author_rewrite_rules () global $ wp_rewrite; $ new_rules = mảng ("nhà văn / ([^ /] +) /?" => "index.php? Author_name =". $ wp_rewrite-> preg_index (1), "nhà văn / ([^ /] +) / trang /? ([0-9] 1,) /? "=>" Index.php? Author_name = ". $ Wp_rewrite-> preg_index (1)." & Paged = ". $ Wp_rewrite-> preg_index (2), "nhà văn / ([^ /] +) / (feed | rdf | rss | rss2 | nguyên tử) /?" => "index.php? Author_name =". $ wp_rewrite-> preg_index (1). "& feed =". $ wp_rewrite-> preg_index (2), "nhà văn / ([^ /] +) / feed / (feed | rdf | rss | rss2 | nguyên tử) /?" => "index.php? Author_name =". > preg_index (1). "& feed =". $ wp_rewrite-> preg_index (2)); $ wp_rewrite-> quy tắc = $ new_rules + $ wp_rewrite-> quy tắc;
Chỉ cần nhớ rằng cả hai phương thức này đều không hoạt động cho đến khi bạn xóa các quy tắc viết lại ban đầu. Bạn sẽ phải làm điều này bất cứ khi nào bạn thực hiện thay đổi cho các chức năng này, nhưng sau đó các quy tắc mới của bạn sẽ gắn bó vô thời hạn.
Xóa các quy tắc viết lại
Bất cứ khi nào bạn thực hiện cập nhật mã viết lại URL, các thay đổi sẽ không được áp dụng ngay lập tức. Bạn phải xóa các quy tắc viết lại .htaccess để mã mới của bạn sẽ được thêm vào. Tuy nhiên, thực hiện điều này trên mỗi trang init là vô cùng lãng phí vì nó ghi vào cơ sở dữ liệu và làm mới cứng tệp .htaccess.
Phương pháp tốt hơn là truy cập trang permalinks của bạn trong bảng quản trị và lưu lại các thay đổi. Điều này luôn gọi một flush_rewrite_rules để bạn không bao giờ phải lo lắng về việc người dùng ở ngoại vi gặp phải sự cố tải. Và chỉ mất một lần để lưu lại trang và cập nhật tất cả các quy tắc trong hệ thống của bạn. Nhưng nếu điều này không hiệu quả, bạn có thể thử gọi $ wp_rewrite-> flush_rules ();
Sử dụng quy tắc không phải WP
Bên trong $ wp_rewrite
lớp chúng tôi có quyền truy cập vào hàng chục tài sản. Một trong những lựa chọn quan trọng hơn là $ wp_rewrite-> non_wp_rules
trong đó thu thập một loạt các chuyển hướng không nhấn tệp index.php.
Điều này thực sự được sử dụng thường xuyên nhất trong phát triển plugin WordPress. Bạn có thể đẩy một loại URL tùy chỉnh cụ thể (chẳng hạn như / lịch / tháng sáu 2012 /
) vào phần cuối của trang web của bạn (/wp-content/plugins/calWikiplug/myscript.php
). Nhưng tất nhiên, có những cách sử dụng khác cho mảng kết hợp các quy tắc viết lại tùy chỉnh này ngoài các plugin. Tôi đã cung cấp một ví dụ tuyệt vời trong bối cảnh dưới đây.
Che dấu các tập tin chủ đề của bạn
Đây là một gợi ý phổ biến tôi thấy thường xuyên trên các bảng thảo luận WordPress. Lý tưởng nhất là chúng tôi muốn tham khảo một số tệp bên trong / wp-content / chủ đề / huyền thoại /
thư mục với một URL thanh lịch hơn. Lưu ý rằng điều này sẽ yêu cầu một bộ viết lại WordPress khác để thay đổi cấu trúc thư mục.
Hệ thống viết lại nội bộ của WordPress luôn đẩy nội dung về phía một tệp định tuyến. Trong trường hợp mặc định, chúng tôi sử dụng index.php cùng với bất kỳ dữ liệu chuỗi truy vấn bổ sung nào. Nhưng để ẩn thư mục mẫu tiêu chuẩn của chúng tôi (/ wp-content / chủ đề / huyền thoại / *
) chúng tôi sẽ cần hiển thị nhiều tệp khác nhau.
add_action ('Gener_rewrite_rules', 'Themes_dir_add_rewrites'); hàm Themes_dir_add_rewrites () $ theme_name = next (explode ('/ Themes /', get_ststyleheet_directory ())); toàn cầu $ wp_rewrite; $ new_non_wp_rules = mảng ('css /(.*)' => 'wp-content / Themes /'. $ theme_name. '/ css / $ 1', 'js /(.*)' => 'wp-content / Themes / '. $ theme_name.' / js / $ 1 ',' hình ảnh / wordpress-urls-viết lại /(.*) '=>' wp-content / Themes / '. $ theme_name.' / hình ảnh / wordpress-urls-viết lại / $ 1 ',); $ wp_rewrite-> non_wp_rules + = $ new_non_wp_rules;
Tôi đã viết một chức năng mới Themes_dir_add_rewrites ()
để lấy tất cả nội dung chính từ các URL dài hơn này và chuyển hướng chúng trong phần phụ trợ. Lưu ý rằng chúng ta đang sử dụng thuộc tính bí ẩn khác này của lớp $ wp_rewrite có tên non_wp_rules
. Theo các tài liệu, đây là những quy tắc không trực tiếp đến tệp index.php của WP và sẽ được xử lý ở cuối máy chủ.
Điều tuyệt vời về các quy tắc không phải WP này là bạn vẫn có thể quản lý phương thức URL cũ hơn một cách dễ dàng. Không có gì ngăn bạn liên kết đến:
/wp-content/theme/mytheme/images/wordpress-urls-rewrite/logo.jpg
.
Nhưng nó trông đẹp hơn rất nhiều nếu bạn có thể tham khảo:
/images/wordpress-urls-rewrite/logo.jpg
thay thế.
Công cụ & Plugin hữu ích
Chỉ có một vài công cụ bạn có thể sử dụng nếu bạn bị mắc kẹt với việc mã hóa các URL đẹp của riêng bạn. Quá trình này rất khó nắm bắt, vì vậy đừng nản lòng nếu bạn đang vật lộn trong một vài tuần. Tôi cảm thấy nội dung sẽ trở nên dễ dàng hơn khi bạn dành nhiều thời gian hơn để thực hành.
Nhưng để bắt đầu, hãy kiểm tra một số công cụ & plugin viết lại tiện dụng này. Bạn có thể sẽ không cần tất cả trong số họ nhưng thật tuyệt khi tìm thấy một cơ sở phát triển lớn như vậy hoạt động xung quanh việc viết lại WP.
Phân tích viết lại Monkeyman
Khi lần đầu tiên nhảy vào viết lại quy tắc, plugin này là thứ bắt buộc phải có. Nó không thực sự thay đổi bất kỳ quy tắc nào cho trang web của bạn - nó chỉ cho phép bạn kiểm tra mã và xem chuyển hướng nào đi đến trang nào. Nó thậm chí sẽ hoạt động để kiểm tra các biến truy vấn tùy chỉnh cho bất kỳ loại bài tùy chỉnh nào.
Trình xem RewriteRules của AskApache
Điều này tương tự với plugin ở trên trừ việc nó không cho phép bạn kiểm tra các quy tắc của riêng mình. Thay vào đó, plugin này sẽ hiển thị tất cả các quy tắc WP mặc định của trang web của bạn và nơi chúng chuyển hướng đến. Điều này sẽ bao gồm tất cả các thuộc tính chính của $ wp_rewrite
chẳng hạn như cài đặt permalink của bạn và cơ sở trang / danh mục / thẻ.
Kiểm soát htaccess WP
Ở đây bạn có một bộ quy tắc khác để thực hiện chuyển hướng trang mới. Plugin có bảng quản trị riêng, nơi bạn có thể chỉnh sửa các biến như cơ sở tác giả, cơ sở trang và thậm chí nối thêm các quy tắc .htaccess tùy chỉnh của riêng bạn.
Phương pháp này khác so với xây dựng của riêng bạn bằng wp_rewrite. Tuy nhiên, có thể dễ dàng hơn cho các kỹ thuật viên thực sự biết máy chủ web và cảm thấy thoải mái hơn khi viết trực tiếp vào .htaccess.
Viết lại quy tắc kiểm tra
Đây thực sự không phải là một plugin WordPress, nhưng chắc chắn là một công cụ hữu ích để lưu trong tệp. Bạn có thể sao chép lại các quy tắc viết lại và kiểm tra chúng cho trang web của bạn mà không cần chỉnh sửa tệp .htaccess của bạn. Đây là phương pháp hoàn hảo để loại bỏ lỗi khỏi cú pháp của bạn trước khi khởi chạy trực tiếp trên Web.
DW viết lại
DW Rewrite là một plugin rất đơn giản, tạo ra 3 URL đẹp độc đáo ngay sau khi cài đặt. Theo mặc định, nó sẽ thay đổi liên kết quản trị, đăng nhập và đăng ký thành /quản trị viên
, /đăng nhập
, và /ghi danh
tương ứng.
Điều này có thể tuyệt vời nếu bạn cần sửa chữa nhanh chóng cho một blog có nhiều tác giả. Nó đặc biệt sẽ ẩn liên kết đăng ký WordPress lúng túng (/wp-login.php?action=register
).
Phần kết luận
Tôi hy vọng hướng dẫn này có thể cung cấp một số ví dụ để bạn suy nghĩ về việc viết lại WordPress. CMS rất phổ biến và các nhà phát triển vẫn đang sản xuất các tính năng mới mỗi ngày. Tùy chỉnh URL của riêng bạn là một phần rất lớn của chức năng dựa trên người dùng. Nó mang lại cho trang web của bạn sự hiện diện và thương hiệu độc đáo của riêng mình so với các tùy chọn mặc định.
Nếu bạn gặp rắc rối với các quy tắc viết lại, sẽ không bao giờ khó khăn để hoàn tác thiệt hại. Chỉ cần xóa mã chức năng và xóa các quy tắc .htaccess của bạn, nó sẽ xuất hiện như không có gì thay đổi. Hãy chắc chắn kiểm tra một số bài viết tương tự khác mà bạn có thể tìm thấy về chủ đề này. Và nếu bạn có bất kỳ câu hỏi hoặc nhận xét nào, bạn có thể chia sẻ chúng với chúng tôi trong khu vực thảo luận bài.