- Статус
- Открыто
- Теги темы
- Bug
Обзор проблемы
Когда Вы назначаете термины записям, WordPress сохраняет текущее общее количество записей, которым назначен конкретный термин.
Если Вы удаляете термин из какой-либо записи, это количество уменьшается. Если в настройках задана синхронизация терминов, переведенный термин будет удален из переведенной записи, но количество не уменьшается.
Обходное решение
Вы можете добавить следующий фрагмент кода (с помощью плагина или файла functions.php Вашей темы оформления), чтобы принудительно пересчитать количество терминов для переводов:
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);