การสร้างโครงสร้างลิงก์ถาวรที่กำหนดเองสำหรับภาษา


9

ฉันเขียนระบบหลายภาษาอย่างง่ายโดยคลิกที่ไอคอนรูปธงตั้งค่าคุกกี้หนึ่งปีที่มีรหัสภาษาสองตัวอักษร (เช่น nl, de, ฯลฯ )

ฉันขอให้wpดำเนินการเพื่ออ่านค่าคุกกี้จากนั้นใช้the_titleและthe_contentตัวกรองเพื่อแสดงภาษาที่ถูกต้อง (ภาษาที่แตกต่างกันจะถูกป้อนผ่าน metaboxes ในหน้า / หน้าจอแก้ไขโพสต์)

ทั้งหมดนี้ใช้งานได้ดียกเว้นฉันต้องการให้มีการแปลภาษาสำหรับแต่ละภาษาโดยที่รหัสภาษาสองตัวอักษรนั้นอยู่ระหว่างชื่อโดเมนและโครงสร้างลิงก์ตามปกติ ฉันใช้%postname%โครงสร้างลิงก์ถาวรดังนั้นสิ่งต่อไปนี้ทั้งหมดจะถูกต้อง:

http://example.com/nl/about-us
http://example.com/de
http://example.com/fr/2012/03
http://example.com/es/this-is-a-post-title

หากภาษาปัจจุบันเป็นภาษาอังกฤษคุณไม่ควรใช้รหัสตัวอักษรสองตัว (มันจะเป็นลิงก์ถาวรปกติ)

จนถึงตอนนี้ฉันได้ใช้query_varsตัวกรองเพื่อเพิ่ม var แบบสอบถามที่เรียกว่าlangแต่ที่ฉันได้รับจนฉันไม่แน่ใจว่าขั้นตอนต่อไปคืออะไร คำแนะนำใด ๆ ที่ชื่นชมมาก!



1
ขอบคุณ @ l2aelba คำตอบนั้นใกล้เพียงพอกับสิ่งที่ฉันต้องการด้วยการเปลี่ยนแปลงเล็กน้อย
Simon Blackbourn

คุณมีโดเมนย่อยสำหรับสิ่งนี้หรือเพียงแค่เว็บไซต์เดียว
kennethjfalbous

เพียงแค่เว็บไซต์เดียว
Simon Blackbourn

คำตอบ:


1

คำถามของคุณซับซ้อนพอที่จะตอบด้วยตัวเอง แต่ฉันอยากจะแนะนำให้คุณติดตั้งqTranslateปลั๊กอิน ในฐานะที่เป็นคำอธิบายของปลั๊กอินพูดว่า:

เลือกหนึ่งใน 3 โหมดเพื่อทำให้ URL ของคุณสวยและเป็นมิตรกับ SEO - การใช้งานร่วมกันได้ทุกที่? lang = en เรียบง่ายและสวยงาม / en / foo / หรือ en.yoursite.com ที่สวยงามและเป็นระเบียบ

ดังนั้นคุณสามารถลองตรวจสอบโค้ดของปลั๊กอินและดูวิธีการใช้งานหรือใช้งานได้เลย


1
ขอบคุณสำหรับลิงค์ฉันจะดูเพื่อดูว่าฉันสามารถแยกแยะรหัสได้หรือไม่
Simon Blackbourn

-1

นี่คือตัวกรองที่ฉันใช้:

function em_wpml_dbem_taxonomy_category_slug($option){
$lang = get_bloginfo('language');

if( $lang === 'es-ES' ){
    $option = 'eventos/categorias';
} else {
    $option = 'events/categories';
}
return $option;
}
add_filter('pre_option_dbem_taxonomy_category_slug', 'em_wpml_dbem_taxonomy_category_slug');

2
โปรดเพิ่มคำอธิบายให้กับคำตอบของคุณ - ขอบคุณ
นิโคไล
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.