get_categories только получение категорий на основном языке

Вопрос или проблема

Я пытаюсь получить в “контент-композере” категории проектов на основе активного языка. Но я получаю только категории основного языка, никогда не другие.

Мой код:

Категория

Все

    $categories = get_categories('taxonomy=jw_portfolio_categories');       

                    if(!empty($categories)){
                        foreach($categories as $cat){
                            ?><option value="<?php echo $cat->term_id; ?>"><?php echo $cat->name; ?></option><?php
                        }
                    }   
    ?>
                </select>

Есть идеи, как получить все категории или категории активного языка в админке WP?

У меня есть решение, если вы используете WPML для поддержки нескольких языков, я использовал этот код раньше. Модифицировано после вашей таксономии.

<?php

//Получить категории с текущего языка
//Использует WPML для мультиязычности

$terms = get_terms('jw_portfolio_categories','hide_empty=1' );

if ( !empty( $terms ) ) {

$term_links = "";

foreach ( $terms as $term ) {

    if( $term->term_id == icl_object_id( $term->term_id,'jw_portfolio_categories', false, ICL_LANGUAGE_CODE ) ) { 
    ?>

        <option value="<?php echo $term->id; ?>"><?php echo $term->name; ?></option>

    <?php
    }
}

echo join( '', $term_links );

}

?>

ОБНОВЛЕНО, это должно сработать.

<?php
  $category_ID = get_cat_ID ("CategoryName");
  $get_correct_ID_lang = icl_object_id($category_ID, 'category', false)
  $categories = get_categories('child_of=" . $get_correct_ID_lang);
  foreach ($categories as $cat) {
?>
    <a href="https://wordpress.stackexchange.com/questions/55025/<?php echo get_category_link($cat->cat_ID); ?>"><?php echo $cat->cat_name; ?></a>, 
<?php
  }
?>

Вы должны перевести свой тип записи и также создать переведенные категории для других языков.

Ответ или решение

Для корректной выборки категорий проектов на основе активного языка в WordPress с использованием мультиязычного плагина WPML, вы можете использовать следующий код. Этот код обеспечит получение категорий, привязанных к текущему языку, и корректное отображение в выпадающем списке.

Вот пример кода, который можно использовать:

<?php
// Получаем термины из таксономии 'jw_portfolio_categories', исключая пустые
$terms = get_terms(array(
    'taxonomy' => 'jw_portfolio_categories',
    'hide_empty' => true,
));

if (!empty($terms) && !is_wp_error($terms)) {
    // Массив для хранения ссылок на термины
    $term_links = "";

    foreach ($terms as $term) {
        // Проверяем наличие ID термина для текущего языка
        $translated_term_id = icl_object_id($term->term_id, 'jw_portfolio_categories', false, ICL_LANGUAGE_CODE);

        // Убедитесь, что перевод существует
        if ($translated_term_id) {
            $translated_term = get_term($translated_term_id, 'jw_portfolio_categories');
            if ($translated_term) {
                // Добавляем опцию в выпадающий список
                $term_links .= '<option value="' . esc_attr($translated_term->term_id) . '">' . esc_html($translated_term->name) . '</option>';
            }
        }
    }

    // Выводим выпадающий список
    echo '<select name="project_categories">';
    echo '<option value="">Все</option>'; // Опция "Все" для выбора всех категорий
    echo $term_links;
    echo '</select>';
}
?>

Объяснение кода:

  1. Получение категорий: Используется функция get_terms, которая получает термины из заданной таксономии и исключает пустые.
  2. Итерация по терминам: Каждая полученная категория проверяется на наличие перевода.
  3. Функция icl_object_id: Эта функция используется для получения переведенного ID термина для текущего языка, настроенного в WPML.
  4. Проверка на наличие перевода: Если перевод существует, мы получаем термин с помощью get_term и добавляем его в выпадающий список.
  5. Вывод: Выпадающий список формируется с опцией "Все" и всеми категориями на текущем языке.

Важно:

  • Убедитесь, что все категории переведены на нужные языки через интерфейс WPML в админке.
  • Код выше должен быть размещен в нужном месте вашего шаблона или плагина, чтобы работать соответствующим образом.

Следуя этому подходу, вы сможете корректно отобразить категории проектов в соответствии с выбранным языком в вашей админ-панели WordPress.

Оцените материал
Добавить комментарий

Капча загружается...