WPML
Stato
Risolto dall’autore
Risolto in
Blocksy Companion 2.0.33
Plugin/tema correlato
Blocksy
Tag dell’argomento
Compatibility

Panoramica del problema

Nel tema Blocksy, quando si utilizza la funzionalità Products Tab con WPML, le schede tradotte in una lingua secondaria potrebbero essere visualizzate in modo errato nella lingua originale sul front-end.

Soluzione alternativa

Assicurati di avere un backup completo del tuo sito prima di procedere.


  • Apri il file …/wp-content/plugins/blocksy-companion-pro/framework/premium/extensions/woocommerce-extra/features/custom-tabs/feature.php

  • Cerca la riga 139.

  • Sostituisci:
    $all_products_tabs = get_posts([
    	'numberposts' => -1,
    	'post_type' => $this->post_type,
    ]);

  • Con:
    $all_products_tabs = get_posts([
    	'numberposts' => -1,
    	'post_type' => $this->post_type,
    	// WPML Workaround for compsupp-7255 - PART 1
    	'suppress_filters' => false
    ]);

  • Quindi, apri il file …/wp-content/plugins/blocksy-companion-pro/framework/features/conditions/rules-resolver.php

  • Cerca la riga 364.

  • Sostituisci:
    if (
    	isset($rule['payload'])
    	&&
    	isset($rule['payload']['post_id'])
    	&&
    	$post_id
    	&&
    	intval($post_id) === intval($rule['payload']['post_id'])
    ) {
    	return true;
    }

  • Con:
    // WPML Workaround for compsupp-7255 - Part 2
    if ( class_exists('Sitepress') ) {
    	$rule['payload']['post_id'] = apply_filters( 'wpml_object_id', $rule['payload']['post_id'], get_post_type($rule['payload']['post_id']) , TRUE  );
    }
    
    if (
    	isset($rule['payload'])
    	&&
    	isset($rule['payload']['post_id'])
    	&&
    	$post_id
    	&&
    	intval($post_id) === intval($rule['payload']['post_id'])
    ) {
    	return true;
    }

Tutti i problemi noti →