WPML
Statut
Résolu
Signalé pour
WPML Multilingual CMS 4.6.4
Résolu dans
WPML 4.7
Extension/thème associé
WooCommerce Memberships
Étiquettes de sujet
Compatibility

Aperçu de l’anomalie

Si vous utilisez WooCommerce Membership, vous remarquerez que si une page est ajoutée dans les paramètres Restrict Content d’un plan d’adhésion puis supprimée, WPML applique de manière incorrecte la restriction à toutes les pages du site, et non seulement à celles spécifiées dans le plan d’adhésion.

Solution de contournement

Assurez-vous de disposer d’une sauvegarde complète de votre site avant de continuer.


  • Ouvrez le fichier …/wp-content/plugins/woocommerce-multilingual/compatibility/WcMemberships/class-wcml-wc-memberships.php.

  • Recherchez la ligne 134.

  • Remplacez ce code :
    public function add_translated_object_ids( $object_ids ) {
    	$result = [];
    	foreach ( $object_ids as $object_id ) {
    		$type         = apply_filters( 'wpml_element_type', get_post_type( $object_id ) );
    		$trid         = apply_filters( 'wpml_element_trid', null, $object_id, $type );
    		$translations = array_values( wp_list_pluck(
    			apply_filters( 'wpml_get_element_translations', [], $trid, $type ),
    			'element_id'
    		) );
    
    		$result = array_merge( $result, $translations );
    	}
    
    	return $result;
    }


  • Par :
    public function add_translated_object_ids( $object_ids ) {
    	$result = [];
    	foreach ( $object_ids as $object_id ) {
    		$type         = apply_filters( 'wpml_element_type', get_post_type( $object_id ) );
    		$trid         = apply_filters( 'wpml_element_trid', null, $object_id, $type );
    		$translations = array_values( wp_list_pluck(
    			apply_filters( 'wpml_get_element_translations', [], $trid, $type ),
    			'element_id'
    		) );
    
    		$result = array_merge( $result, $translations );
    	}
    
    	// Workaround for compsupp-6900
    	if ( empty($result) ) {
    		return $object_ids;
    	}
    
    	return $result;
    }

Toutes les anomalies connues →