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

  • Добрый день всем.
    Я пытаюсь сделать выгрузку всех меток, но почему то в поле «slug» русский текст не отображается правильно.
    При выгрузки всех категорий такой проблемы не было.
    Вот примерный код который я использую:

    
    function r5ua_function_products_clone_tags() {
        $terms = get_terms( 'product_tag' );
        $term_array = array();
        if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
            foreach ( $terms as $term_one ) {
                $term_array[] = $term_one;
            }
        }
        return $term_array;
    }
    function r5ua_function_products_clone_json() {
        $js_data = array();
        $js_data["tags"] = r5ua_function_products_clone_tags();
        return json_encode($js_data, JSON_UNESCAPED_UNICODE );
    }
    

    В итоге получается что то такое:

    
    "slug":"%d0%b0%d0%b2%d1%82%d0%be%d0%ba%d0%be%d1%81%d0%bc%d0%b5%d1%82%d0%b8%d0%ba%d0%b0-%d0%b8-%d0%b0%d0%b2%d1%82%d0%be%d1%85%d0%b8%d0%bc%d0%b8%d1%8f"
    
    • Тема изменена 4 месяца, 3 недели назад пользователем rofl113.
    • Тема изменена 4 месяца, 3 недели назад пользователем rofl113.
Просмотр 4 ответов — с 1 по 4 (всего 4)
  • почему то в поле «slug» русский текст не отображается правильно.

    Потому что slug, являясь частью URI, может содержать только латиницу, цифры и несколько спецсимоволов. Никаких русских, китайских и прочих нац.букв. Таковы правила Интернета.

    %d0%b0%d0% — это urlencode, то есть специальный метод кодирования «непечатных» символов для URI.

    То, что браузер показывает русские буквы, так он специально обучен декодировать urlencode для удобства юзера. С punycode — методом кодирования так называемых «русских» доменов — всё точно так же, только способ кодирования иной.

    Понял. Спасибо большое! Поправлю у меток slug на англ.

    Поправлю у меток slug на англ.

    На всякий случай 🙂 Cyr-To-Lat

    Интересный плагин, спасибо за информацию, попробую! =)

Просмотр 4 ответов — с 1 по 4 (всего 4)