- สถานะ
- เปิด
ภาพรวมของปัญหา
ฟังก์ชันดั้งเดิมของ WordPress has_category ไม่ทำงานสำหรับโพสต์ที่แปลแล้ว
ตัวอย่างของปัญหานี้มีดังนี้
- เรามีหมวดหมู่ที่มี slug ภาษาอังกฤษ “test” และคำแปลภาษาฝรั่งเศส “test-fr”
- หมวดหมู่นี้ถูกกำหนดให้กับโพสต์
- เมื่อคุณเรียกใช้ has_category(”test”) ภายในลูปในไฟล์ single.php ของธีมของคุณ ระบบจะส่งคืนค่า true สำหรับภาษาเริ่มต้น แต่จะส่งคืนค่า false สำหรับการแปล
วิธีแก้ปัญหาชั่วคราว
กำหนดฟิลเตอร์ใหม่ในไฟล์ functions.php ของธีมของคุณ:
function wp_has_category ($category) {
$category = get_term_by('name', $category, 'category');
return has_category($category);
}
add_filter('wp_has_category', 'wp_has_category', 10, 1);แทนที่ฟังก์ชัน has_category ด้วยฟิลเตอร์ใหม่นี้:
apply_filters( 'wp_has_category', 'test' )
ฟิลเตอร์นี้จะรับหมวดหมู่ที่แปลแล้วโดยอิงจากชื่อของหมวดหมู่ต้นฉบับ และตรวจสอบว่ามีการกำหนดหมวดหมู่ที่แปลแล้วให้กับโพสต์หรือไม่