WPML
สถานะ
แก้ไขแล้วโดยผู้พัฒนา
แก้ไขใน
Bricks 2.0
ปลั๊กอิน/ธีมที่เกี่ยวข้อง
Bricks
แท็กหัวข้อ
Compatibility

ภาพรวมของปัญหา

ใน Bricks Theme เมื่อมีการตั้งค่าเงื่อนไขเทมเพลตให้แสดงผลสำหรับคำศัพท์เฉพาะ (เช่น หมวดหมู่ใดหมวดหมู่หนึ่ง) เงื่อนไขดังกล่าวจะไม่มีผลอย่างถูกต้องในเทมเพลตที่แปลแล้ว

วิธีแก้ปัญหาชั่วคราว

โปรดตรวจสอบให้แน่ใจว่าได้ทำการสำรองข้อมูลไซต์ทั้งหมดของคุณก่อนดำเนินการต่อ

ส่วนที่ I


  • ไปที่ WPML > การตั้งค่า > ฟิลด์ที่กำหนดเอง

  • ค้นหาฟิลด์ _bricks_template_settings

  • ตั้งค่าเป็น คัดลอก

ส่วนที่ II


  • เปิดไฟล์ functions.php ของธีมคุณ

  • เพิ่มโค้ดต่อไปนี้:
    /**
     * WPML Workaround for compsupp-7667
     */
    add_filter('get_post_metadata', 'wpml_compsupp7667_bricks_translate_template_conditions', 10, 4);
    function wpml_compsupp7667_bricks_translate_template_conditions($value, $post_id, $key, $single) {
        if ($key !== '_bricks_template_settings') {
            return $value;
        }
    
        // Remove filter temporarily to avoid infinite loop
        remove_filter('get_post_metadata', 'wpml_compsupp7667_bricks_translate_template_conditions', 10);
        
        // Get all meta values
        $raw_values = get_post_meta($post_id, $key, false);
        
        // Add filter back
        add_filter('get_post_metadata', 'wpml_compsupp7667_bricks_translate_template_conditions', 10, 4);
    
        // If we have no values, return the original
        if (empty($raw_values)) {
            return $value;
        }
    
        // Process the array structure
        foreach ($raw_values as &$settings) {
            if (is_array($settings) && isset($settings['templateConditions'])) {
                foreach ($settings['templateConditions'] as &$condition) {
                    if (!empty($condition['archiveTerms']) && is_array($condition['archiveTerms'])) {
                        foreach ($condition['archiveTerms'] as &$termString) {
                            if (strpos($termString, '::') !== false) {
                                list($taxonomy, $termId) = explode('::', $termString);
                                $translatedId = apply_filters('wpml_object_id', intval($termId), $taxonomy, true);
                                if ($translatedId) {
                                    $termString = $taxonomy . '::' . $translatedId;
                                }
                            }
                        }
                    }
                }
            }
        }
    
        return $raw_values;
    }

ปัญหาที่ทราบแล้วทั้งหมด →