Как я могу изменить метку “Комментарии” на “Обзор” повсюду в установке WP без перевода?

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

Получил способ изменить метки повсюду для типа поста “Пост”. Для сайта клиента мне нужно использовать комментарии WordPress. Просто нужно изменить метку с “Комментарии/Комментарий” на “Обзор” повсюду. Но где для типа поста “Пост” мы можем использовать $wp_post_types;, что мы можем использовать для комментариев?

Я пробовал с $wp_comments, $wp_comment и т. д., но не удалось.

Как я могу это сделать?

ПС: Я не хочу способа перевода всех строк и т. д. Просто нужен способ, как в ссылке выше. И не только метки меню, мне нужно изменить их повсюду, чтобы на странице написания поста в чекбоксе с надписью “Все комментарии” также изменялось.

Вы можете попробовать фильтр gettext.

Согласно Codex:

Этот фильтр применяется к переведенному тексту международными функциями (__(), _e(), _x() и т. д.). Этот фильтр всегда применяется, даже если интернационализация не в действии и если домен текста не был загружен.

Вот пример:

function custom_gettext( $translated_text, $untranslated_text, $domain )
{       
    if( FALSE !== stripos( $untranslated_text, 'comment' ) )
    {
            $translated_text = str_ireplace( 'Comment', 'Review', $untranslated_text ) ;
    }
    return $translated_text;
}

is_admin() && add_filter( 'gettext', 'custom_gettext', 99, 3 );

чтобы изменить строки, содержащие Comment, на Review (не учитывая регистр).

Вы можете настроить замены по своим нуждам.

Более грубый простой метод взлома – использовать jQuery, чтобы найти целевую строку Comment и заменить ее на Review. Для этого вы можете ознакомится с этой темой:

https://stackoverflow.com/questions/8146648/jquery-find-text-and-replace

Пример:

$("#container p:contains('Comment')").text("Review");

Чтобы включить этот скрипт в заголовки WordPress, вы можете добавить действие и функцию в файл functions.php вашей темы. Для получения более подробной информации, ознакомьтесь с:

http://codex.wordpress.org/Plugin_API/Action_Reference/wp_head
http://codex.wordpress.org/Function_Reference/wp_enqueue_script

Единственный способ изменить все места со словом “комментарий/комментарии” на “обзор/обзоры” – это создать новый файл перевода для ядра, соответствующих плагинов (akismet) и темы. Их просто слишком много, чтобы справляться каким-либо другим способом.

Разница между комментариями и постами в том, что вы не можете регистрировать новые типы комментариев (нет API для этого), и именно поэтому нет простого способа удалить комментарии тем же образом, как были удалены посты в вопросе, на который вы указали.

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

Чтобы изменить название "Комментарии" на "Ревью" по всей установке WordPress без использования перевода, вы можете воспользоваться фильтром gettext. Этот подход обеспечивает гибкость, позволяя изменять строки, выводимые по всему сайту, без необходимости редактирования исходного кода или создания переводов.

Шаги для реализации:

  1. Открытие файла functions.php:
    Вам нужно добавить код в файл functions.php вашей активной темы. Это можно сделать через админ-панель WordPress, перейдя в раздел "Внешний вид" → "Редактор" и выбрав файл functions.php.

  2. Использование фильтра gettext:
    Вставьте следующий код в файл functions.php:

    function custom_gettext( $translated_text, $untranslated_text, $domain ) {
       if ( FALSE !== stripos( $untranslated_text, 'comment' ) ) {
           $translated_text = str_ireplace( 'Comment', 'Review', $translated_text );
           $translated_text = str_ireplace( 'Comments', 'Reviews', $translated_text );
       }
       return $translated_text;
    }
    
    add_filter( 'gettext', 'custom_gettext', 99, 3 );

    В этом коде проверяется, содержит ли $untranslated_text слово "comment". Если да, то оно заменяется на "review". Также добавлена замена множественного числа – "Comments" на "Reviews", чтобы изменения охватывали все возможные варианты.

Как это работает

Фильтр gettext обрабатывает все строки, которые были подготовлены для перевода с помощью функций интернационализации, таких как __(), _e() и другие. Мы добавляем свой собственный фильтр, который проверяет каждую строку на наличие слова "comment" и заменяет его.

Альтернативный метод: jQuery

Если вы хотите использовать более "бревенчатый" подход, вы можете заменить текст непосредственно с помощью JavaScript. С помощью jQuery ваш код будет выглядеть так:

jQuery(document).ready(function($) {
    $("body:contains('Comment')").each(function() {
        $(this).html($(this).html().replace(/Comment/g, 'Review'));
        $(this).html($(this).html().replace(/Comments/g, 'Reviews'));
    });
});

Этот код можно вставить через элемент <script> в head вашей темы, используя хук wp_head:

add_action('wp_head', 'add_custom_script');
function add_custom_script() {
    ?>
    <script>
    jQuery(document).ready(function($) {
        $("body:contains('Comment')").each(function() {
            $(this).html($(this).html().replace(/Comment/g, 'Review'));
            $(this).html($(this).html().replace(/Comments/g, 'Reviews'));
        });
    });
    </script>
    <?php
}

Замечания:

  1. Тестирование: После добавления кода, рекомендуется протестировать изменения на сайте, чтобы убедиться, что все строки заменены корректно.
  2. Учитывайте производительность: Частые замены текстов через JavaScript могут повлиять на производительность, особенно на больших страницах.
  3. Обновления: При обновлении WordPress или темы, не забудьте проверить, что custom-код не был затерт.

С помощью этих подходов вы сможете полностью заменить название "Комментарии" на "Ревью" на вашем сайте WordPress без использования систем перевода.

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

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