WPML
Status
Resolvido
Relatado para
WPML Multilingual CMS 4.6.4
Resolvido em
WPML 4.7
Plugin/tema relacionado
WooCommerce Memberships
Tags de tópico
Compatibility

Visão geral do problema

Se você estiver usando o WooCommerce Membership, você notará que, se uma página for adicionada nas configurações de Restrict Content dentro de um plano de membros e posteriormente excluída, o WPML aplica incorretamente a restrição a todas as páginas do site, não apenas àquelas especificadas no plano de membros.

Solução alternativa

Certifique-se de ter um backup completo do seu site antes de prosseguir.


  • Abra o arquivo …/wp-content/plugins/woocommerce-multilingual/compatibility/WcMemberships/class-wcml-wc-memberships.php.

  • Procure a linha 134.

  • Substitua este código:
    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;
    }


  • Por:
    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;
    }

Todos os problemas conhecidos →