WPML

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

เมื่อใช้ Posts List Element จาก Unlimited Elements for Elementor ร่วมกับ WPML และ Yoast SEO โมดูลจะไม่แสดงหมวดหมู่หลักของ Yoast ในการแปล แต่จะแสดงหมวดหมู่แรก (ตามลำดับตัวอักษร) ที่โพสต์นั้นสังกัดอยู่แทน

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

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

  • เปิดไฟล์ …/wp-content/plugins/unlimited-elements-for-elementor/provider/provider_params_processor.class.php
  • ค้นหาฟังก์ชัน getPostMainCategory ในบรรทัดที่ 574
  • แทนที่:
    /**
     * get post main category from the list of terms
     */
    private function getPostMainCategory($arrTerms, $postID){
    
    	//get term data
    
    	if(count($arrTerms) == 1){		//single
    		$arrTermData = UniteFunctionsUC::getArrFirstValue($arrTerms);
    		return($arrTermData);
    	}
    
    	$arrMeta = UniteFunctionsWPUC::getPostMeta($postID,true);
    
    	$mainCategoryID = UniteFunctionsUC::getVal($arrMeta, "_yoast_wpseo_primary_category");
    
    
    	if(empty($mainCategoryID))
    		$mainCategoryID = UniteFunctionsUC::getVal($arrMeta, "rank_math_primary_category");
    
    	if(empty($mainCategoryID)){
    
    		unset($arrTerms["uncategorized"]);
    		$arrTermData = UniteFunctionsUC::getArrFirstValue($arrTerms);
    
    		return($arrTermData);
    	}
  • ด้วย:
    	/**
    	 * get post main category from the list of terms
    	 */
    	private function getPostMainCategory($arrTerms, $postID){
    
    		//get term data
    
    		if(count($arrTerms) == 1){		//single
    			$arrTermData = UniteFunctionsUC::getArrFirstValue($arrTerms);
    			return($arrTermData);
    		}
    
    		$arrMeta = UniteFunctionsWPUC::getPostMeta($postID,true);
    
    		$mainCategoryID = UniteFunctionsUC::getVal($arrMeta, "_yoast_wpseo_primary_category");
    
    
    		if(empty($mainCategoryID))
    			$mainCategoryID = UniteFunctionsUC::getVal($arrMeta, "rank_math_primary_category");
    
    		// WPML Workaround for compsupp-8023
    		if (!empty($mainCategoryID)) {
            $mainCategoryID = apply_filters('wpml_object_id', $mainCategoryID, 'category', true);
    		}
    
    		if(empty($mainCategoryID)){
    
    			unset($arrTerms["uncategorized"]);
    			$arrTermData = UniteFunctionsUC::getArrFirstValue($arrTerms);
    
    			return($arrTermData);
    		}

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