Có một trang nào đó chi tiết chính xác cách WordPress tạo sên cho URL không? Tôi đang viết một tập lệnh cần tạo các sên URL giống hệt với các tập lệnh mà WordPress tạo ra.
Có một trang nào đó chi tiết chính xác cách WordPress tạo sên cho URL không? Tôi đang viết một tập lệnh cần tạo các sên URL giống hệt với các tập lệnh mà WordPress tạo ra.
Câu trả lời:
Tắt dơi, tôi không thể cung cấp cho bạn một trang / hướng dẫn / tài liệu về cách tạo ra các con sên WP, nhưng hãy xem sanitize_title()
chức năng này.
Đừng để lại ấn tượng sai bởi tên hàm, nó không có nghĩa là vệ sinh một tiêu đề để sử dụng thêm làm tiêu đề trang / bài đăng . Nó nhận một chuỗi tiêu đề và trả về nó được sử dụng trong một URL:
Có thể có các trường hợp cạnh trong đó lõi làm điều gì đó bổ sung (bạn phải xem nguồn để xác minh rằng sanitize_title()
sẽ luôn đủ để tạo ra chính xác như bạn mong đợi), nhưng điều này sẽ bao gồm ít nhất 99%, nếu không phải là tất cả, .
sanitize_title
bộ lọc được áp dụng trong chức năng hay không, hay liệu điều đó được xử lý bởi một thứ khác sau khi chức năng đã chạy.
sanitize_title
lọc mà người ta cần kiểm tra. Nhưng cũng có các chức năng liên quan khác . Tôi thực sự không có ý tưởng về điều này. Đôi khi nó có vẻ SimplePie
dễ hiểu hơn WP_Rewrite
điều. Btw: Toscho hoạt động dựa trên việc tích hợp chức năng "Trình phân tích ghi lại Monkeyman" vào plugin của mình. Đó là nơi mọi thứ bắt đầu thực sự thú vị.
Bạn có thể sử dụng chức năng này:
static public function slugify($text)
{
// replace non letter or digits by -
$text = preg_replace('~[^\pL\d]+~u', '-', $text);
// transliterate
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
// remove unwanted characters
$text = preg_replace('~[^-\w]+~', '', $text);
// trim
$text = trim($text, '-');
// remove duplicate -
$text = preg_replace('~-+~', '-', $text);
// lowercase
$text = strtolower($text);
if (empty($text)) {
return 'n-a';
}
return $text;
}
Đây là loại chính xác làm thế nào chức năng khử trùng url wp hoạt động.
Không có chế độ nhà phát triển được tích hợp vào WordPress ngoài WP_DEBUG
điều này, điều này không giúp bạn quá nhiều trong trường hợp này. Về cơ bản WP sử dụng "Rewrite API" , đây là một trình bao bọc mức độ thấp dựa trên chức năng cho WP_Rewrite
lớp mà bạn có thể đọc về Codex . Đối global $wp_rewrite
tượng đứng tại dịch vụ của bạn để kiểm tra nó hoặc tương tác với lớp.
Toschos "T5 Rewrite" -Plugin và Jan Fabrys "Monkeyman Rewrite Analyzer" -Plugin sẽ hướng dẫn bạn theo cách của bạn. Tôi đã viết một phần mở rộng nhỏ cho "Trình ghi lại T5" để tích hợp dễ dàng với "Trình phân tích ghi lại Monkeyman", mà bạn có thể tìm thấy trong phần giới thiệu "Viết lại bài viết" ở đây trên GitHub .
"Monkeyman" -plugin thêm một trang mới, được nộp trong menu UI của quản trị viên trong Công cụ . Phần mềm "Viết lại T5" thêm một tab trợ giúp mới vào trang Cài đặt > Permalinks . Tiện ích mở rộng của tôi cũng thêm các tab trợ giúp vào Trang công cụ được đề cập .
Dưới đây là một ảnh chụp màn hình về nội dung tab trợ giúp "T5 Rewrite" trông như thế nào.
Vorlage = Hoa văn | Beschreibung = Giải thích | Beispiele = Ví dụ
-Plugin "T5 Rewrite" thực hiện công việc tuyệt vời với việc giúp bạn kiểm tra đối tượng viết lại. Và nó thậm chí còn nhiều hơn: Nó thêm các khả năng mới. Do đó, nó (ít nhất là trong phần cài đặt của tôi) trong gói plugin cơ bản của tôi.
Trên thực tế, nếu bạn xem hàm lõi wp_insert_post (post.php), bạn sẽ thấy rằng nó thực hiện như sau:
$data['post_name'] = wp_unique_post_slug( sanitize_title( $data['post_title'], $post_ID ), $post_ID, $data['post_status'], $post_type, $post_parent );
$wpdb->update( $wpdb->posts, array( 'post_name' => $data['post_name'] ), $where );
Điều quan trọng cần lưu ý là sử dụng cả wp_unique_post_slug và sanitize_title:
wp_unique_post_slug( sanitize_title(
Tha thứ cho việc tiếp tục một câu hỏi cũ, nhưng tôi có cùng sự cần thiết khi phát hiện ra phương pháp này hoàn toàn phù hợp với tôi:
$some_string = "DON'T STOP ME NOW!";
$slug = sanitize_title(sanitize_title($some_string, '', 'save'), '', 'query');
echo $slug; // dont-stop-me-now
Phương pháp này sử dụng vệ sinh kép.
Cái đầu tiên sử dụng save
chế độ, trong đó các thẻ HTML và PHP bị tước bỏ và các dấu được loại bỏ (các ký tự có dấu được thay thế bằng các dấu tương đương không có dấu).
query
Chế độ thứ hai đảm bảo tất cả các khoảng trắng được thay thế bằng dấu gạch ngang -
và dấu chấm câu khác được loại bỏ.
Hy vọng điều này sẽ giúp được ai đó! :)