gianniB-2
Contesto del problema:
Sto cercando di ordinare i prodotti nella lingua principale, ma l'ordinamento non si sincronizza con le altre lingue.
Sintomi:
Quando provo ad ordinare i prodotti nella lingua principale, tale ordinamento non si sincronizza con le altre lingue.
Domande:
Come posso fare affinché l'ordinamento dei prodotti nella lingua principale si sincronizzi con le altre lingue?
Laura
Sostenitore di WPML dal 05/2018
Lingue:
Inglese (English )
Italiano (Italiano )
Fuso orario:
Europe/Rome (GMT+02:00)
Salve,
grazie per averci contattato. Cosa vuol dire "sto cercando di ordinare i prodotti"?
Di default i prodotti di WooCommerce vengono mostrati in base all'ID e poi si possono ordinare per prezzo, ordine alfabetico ecc con i filtri.
gianniB-2
Tramite backend è possibile ordinare i prodotti di Woocommerce anche con un ordinamento deciso a priori. Andando sulla lista dei prodotti (o filtrandoli per categoria) compare in alto un pulsante "Ordina" che permette l'ordinamento (vedi screenshot). Ecco, questo ordinamento non viene sincronizzato tra le lingue, obbligandomi a ripetere la stessa procedura di ordinamento per ogni lingua.
Laura
Sostenitore di WPML dal 05/2018
Lingue:
Inglese (English )
Italiano (Italiano )
Fuso orario:
Europe/Rome (GMT+02:00)
1. Aggiorna WPML in Plugin > Aggiungi nuovo > Commerciale
2. Aumenta il WP Memory Limit e riprova a salvare l'ordine
gianniB-2
Ho aggiornato i plugin all'ultima versione e aumentato il memori limit a 1024M (limite massimo disponibile dal server), ma il problema persiste
Laura
Sostenitore di WPML dal 05/2018
Lingue:
Inglese (English )
Italiano (Italiano )
Fuso orario:
Europe/Rome (GMT+02:00)
Ho riprodotto il problema e l'ho inviato al secondo livello, vediamo cosa rispondono.
gianniB-2
Ciao,
ci sono novità in merito al problema segnalato?
Laura
Sostenitore di WPML dal 05/2018
Lingue:
Inglese (English )
Italiano (Italiano )
Fuso orario:
Europe/Rome (GMT+02:00)
Puoi provare ad aggiungere questo codice al file functions.php del tema
add_action('woocommerce_after_product_ordering', 'sort_wpml', 10, 2);
function sort_wpml($id, $ordering) {
global $wpdb;
$post_type = get_post_type($id);
$trid = apply_filters( 'wpml_element_trid', NULL, $id, 'post_' . $post_type );
$translations = apply_filters( 'wpml_get_element_translations', NULL, $trid, 'post_' . $post_type );
$prepared_statement = $wpdb->prepare( "SELECT `menu_order` FROM $wpdb->posts WHERE ID = %d", $id );
$order = $wpdb->get_col( $prepared_statement );
foreach ($translations as $lang => $translation){
if ($translation->original == 0) {
$wpdb->update( $wpdb->posts, array( 'menu_order' => $order[0] ), array( 'ID' => $translation->element_id ) );
clean_post_cache( $translation->element_id );
}
}
}
Nota che questo non aggiorna gli originali, quindi se modifichi l'ordine dei post tradotti, gli originali rimangono com'erano.
Prossimamente cercheremo di introdurre questa modifica direttamente in WCML.
gianniB-2
Ciao,
ho inserito il codice e ora, ordinando i prodotti in Inglese, questi si sincronizzano con l'Italiano e il Tedesco. La cosa strana è che il Francese invece non si sincronizza.
Cosa può essere?
Laura
Sostenitore di WPML dal 05/2018
Lingue:
Inglese (English )
Italiano (Italiano )
Fuso orario:
Europe/Rome (GMT+02:00)
Mi dai le credenziali del sito?
Laura
Sostenitore di WPML dal 05/2018
Lingue:
Inglese (English )
Italiano (Italiano )
Fuso orario:
Europe/Rome (GMT+02:00)
Questo però è un sito in produzione, non posso mettermi a fare dei test qui.
Ho provato a riprodurre il problema ma funziona tutto correttamente. Hai modificato i prodotti nella lingua di default? Altrimenti non funziona.