WPML
Статус
Открыто
Теги темы
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);

Все известные проблемы →