- Stato
- Aperto
- Tag dell’argomento
- Bug
Panoramica del problema
Quando assegni dei termini agli articoli, WordPress memorizza un conteggio progressivo del numero di articoli a cui è stato assegnato un determinato termine.
Se rimuovi un termine da un articolo, il conteggio si riduce. Se le impostazioni prevedono la sincronizzazione dei termini, il termine tradotto verrà rimosso dall’articolo tradotto, ma il conteggio non diminuisce.
Soluzione alternativa
Puoi aggiungere il seguente snippet di codice (tramite un plugin o il file functions.php del tuo tema) per forzare il ricalcolo del conteggio dei termini per le traduzioni:
add_action( 'deleted_term_relationships', function($object_id, $tt_ids, $taxonomy){
$trids = array();
$translated_tt_ids = array();
foreach ($tt_ids as $tt_id) {
$trids[] = apply_filters( 'wpml_element_trid', NULL, $tt_id, 'tax_'.$taxonomy );
}
foreach ($trids as $trid) {
$translations = apply_filters( 'wpml_get_element_translations', NULL, $trid, 'tax_'.$taxonomy );
foreach ($translations as $lang => $translation) {
$translated_tt_ids[] = $translation->element_id;
}
}
$translated_tt_ids = array_diff( $translated_tt_ids, $tt_ids );
if ( count( $translated_tt_ids ) ) {
wp_update_term_count( $translated_tt_ids, $taxonomy );
}
}, 11, 3);