มีหน้าเว็บบางแห่งที่มีรายละเอียดอย่างชัดเจนว่า WordPress สร้างทากสำหรับ URL หรือไม่? ฉันกำลังเขียนสคริปต์ที่ต้องการสร้างทาก URL ที่เหมือนกับ WordPress สร้าง
มีหน้าเว็บบางแห่งที่มีรายละเอียดอย่างชัดเจนว่า WordPress สร้างทากสำหรับ URL หรือไม่? ฉันกำลังเขียนสคริปต์ที่ต้องการสร้างทาก URL ที่เหมือนกับ WordPress สร้าง
คำตอบ:
ปิดแบ็ตฉันไม่สามารถให้หน้า / กวดวิชา / เอกสารเกี่ยวกับวิธีสร้างทาก WP แต่ดูที่sanitize_title()
ฟังก์ชั่น
ไม่ได้รับความประทับใจที่ไม่ถูกต้องโดยใช้ชื่อฟังก์ชั่นก็จะไม่ได้หมายถึงการฆ่าเชื้อชื่อสำหรับการใช้งานต่อไปในฐานะหน้า / ชื่อโพสต์ ใช้สตริงชื่อและส่งคืนเพื่อใช้ใน URL:
มีอาจจะเป็นกรณีที่ขอบหลักทำอะไรบางอย่างเพิ่มเติม (คุณจะต้องมองไปที่แหล่งที่มาเพื่อตรวจสอบว่าsanitize_title()
จะเสมอพอเพียงในการสร้างตรงเดียวกับที่คุณคาดหวัง) แต่นี้ควรจะครอบคลุมอย่างน้อย 99% หากไม่ได้ทุกกรณี .
sanitize_title
ตัวกรองที่ใช้ในฟังก์ชั่นนั้นดีหรือไม่หรือว่าถูกจัดการโดยอย่างอื่นหลังจากที่ฟังก์ชั่นทำงาน
sanitize_title
ที่ต้องเช็คเอาท์ แต่มีกำลังยังคนอื่น ๆฟังก์ชั่นที่เกี่ยวข้อง ฉันไม่รู้เกี่ยวกับสิ่งนี้จริงๆ บางครั้งดูเหมือนว่าSimplePie
จะเข้าใจง่ายกว่าWP_Rewrite
สิ่งนั้น Btw: Toscho ทำงานกับการรวมฟังก์ชั่น "Monkeyman Rewrite Analyzer" เข้ากับปลั๊กอินของเขา นั่นคือสิ่งที่เริ่มน่าสนใจจริงๆ
คุณสามารถใช้ฟังก์ชั่นนี้:
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;
}
มันเป็นวิธีการทำงานของฟังก์ชั่น wp url sanitize
ไม่มีโหมดผู้พัฒนาที่ติดตั้งไว้ใน WordPress WP_DEBUG
ซึ่งไม่ได้ช่วยอะไรคุณมากเกินไปในกรณีนี้ โดยทั่วไป WP ใช้"API Rewrite"ซึ่งเป็นฟังก์ชั่นที่ใช้ห่อหุ้มในระดับต่ำสำหรับWP_Rewrite
ระดับซึ่งคุณสามารถอ่านเกี่ยวกับใน Codex global $wp_rewrite
วัตถุยืนที่บริการของคุณเพื่อตรวจสอบได้หรือโต้ตอบกับชั้นเรียน
Toschos "T5 Rewrite" -PluginและJan Fabrys "Monkeyman Rewrite Analyzer" --Pluginจะแนะนำเส้นทางของคุณ ผมเคยเขียนส่วนขยายขนาดเล็กสำหรับ "T5 Rewrite" ได้อย่างราบรื่นรวมกับ "Monkeyman Rewrite วิเคราะห์" ซึ่งคุณสามารถหาได้ใน "T5 Rewrite" Repos wikie นี่บน GitHub
"การ Monkeyman" -plugin เพิ่มหน้าใหม่ยื่นในเมนู UI ผู้ดูแลระบบภายใต้เครื่องมือ "การ T5 Rewrite" -plugin เพิ่มแท็บความช่วยเหลือใหม่ให้กับการตั้งค่า > Permalinksหน้า ส่วนขยายของฉันเพิ่มแท็บความช่วยเหลือไปยังเครื่องมือที่กล่าวถึง - หน้าด้วย
ต่อไปนี้เป็นภาพหน้าจอของสิ่งที่ "แท็บการเขียนซ้ำ T5" - เนื้อหาแท็บความช่วยเหลือดูเหมือน
Vorlage = รูปแบบ | Beschreibung = คำอธิบาย | Beispiele = ตัวอย่าง
"T5 Rewrite" -plugin ทำงานได้อย่างยอดเยี่ยมด้วยการช่วยคุณตรวจสอบวัตถุที่เขียนใหม่ และมันยังเพิ่มขึ้นอีก: เพิ่มความเป็นไปได้ใหม่ ๆ ดังนั้นอย่างน้อยมันก็เป็นส่วนหนึ่งของแพ็คเกจเสริมพื้นฐานของฉัน
ที่จริงแล้วถ้าคุณดูฟังก์ชั่นหลัก wp_insert_post (post.php) คุณจะเห็นว่ามันทำสิ่งต่อไปนี้:
$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 );
สิ่งสำคัญที่ควรทราบคือการใช้ wp_unique_post_slug และ sanitize_title:
wp_unique_post_slug( sanitize_title(
ยกโทษให้กลับมาถามคำถามเดิมอีกครั้ง แต่ฉันมีความจำเป็นเช่นเดียวกับที่พบว่าวิธีการนี้ทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน:
$some_string = "DON'T STOP ME NOW!";
$slug = sanitize_title(sanitize_title($some_string, '', 'save'), '', 'query');
echo $slug; // dont-stop-me-now
วิธีนี้ใช้การฆ่าเชื้อสองครั้ง
คนแรกใช้save
โหมดที่แท็ก HTML และ PHP ถูกถอดออกและสำเนียงจะถูกลบออก (ตัวอักษรเน้นเสียงจะถูกแทนที่ด้วยการเทียบเท่าที่ไม่เน้นเสียง)
query
โหมดที่สองช่วยให้มั่นใจว่ามีการเว้นวรรคทั้งหมดด้วยเครื่องหมายขีดกลาง-
และเครื่องหมายวรรคตอนอื่น ๆ
หวังว่านี่จะช่วยใครซักคน! :)