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
Ce problème est résolu dans WPML 4.7. La mise à jour résout le problème sur votre site, vous n’avez donc besoin de cette solution de contournement que si vous ne pouvez pas encore mettre à jour.
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; }