Вопрос или проблема
Мой сайт требует от пользователей входа в систему для комментирования. Незарегистрированные и вышедшие пользователи видят “Необходимо войти в систему, чтобы комментировать. Вы также можете зарегистрироваться для создания учетной записи.”
Как я могу изменить этот текст и ссылки?
Я видел этот старый пост, но он не работает: Как изменить “Вам необходимо войти в систему, чтобы оставить комментарий.”
В конечном итоге, я хотел бы, чтобы это вызывало всплывающие формы, чтобы пользователи не покидали страницу.
Или есть ли более лучшее решение для этого, например, как-то скрыть текст полностью и показать форму входа (в блоке) только для незарегистрированных/вышедших пользователей?
Спасибо.
Текст “Вам необходимо войти в систему, чтобы оставить комментарий.” происходит из этой строки в WordPress:
https://github.com/WordPress/WordPress/blob/efaf4a8938bbeb8510c8e1e4cc6fe84a434c17c3/wp-includes/comment-template.php#L2449
Когда вы видите что-то, обернутое в функцию двойного подчеркивания __( )
, это означает, что это строка, которую можно перевести.
Вы можете использовать такую функцию и добавить ее в файл functions.php
вашей темы:
add_filter('gettext', 'change_comment_logged_in_notice', 20, 3);
/*
* Измените текст, чтобы потребовать входа в систему для оставления комментария
*
**/
function change_comment_logged_in_notice( $translated_text, $untranslated_text, $domain ) {
switch( $untranslated_text ) {
case 'You must be <a href="%s">logged in</a> to post a comment.':
$translated_text = __( 'Вам необходимо <a href="%s">войти</a>' );
}
return $translated_text;
}
Дополнительная информация о фильтре gettext
: https://developer.wordpress.org/reference/hooks/gettext/
В качестве альтернативы вы можете использовать плагин, такой как Loco Translate, который позволяет вам просматривать переводимые строки и переводить их в интерфейсе:
https://en-ca.wordpress.org/plugins/loco-translate/
Ответ или решение
Чтобы изменить текст "Необходимо войти для комментария" и ссылки на вашем сайте на WordPress, выполните следующие шаги:
1. Изменение текста через фильтры
WordPress использует функцию __()
для обработки переводимых строк, и текст, который вы хотите изменить, можно адаптировать с помощью фильтра gettext
. Вот код, который можно добавить в файл functions.php
вашей темы:
add_filter('gettext', 'change_comment_logged_in_notice', 20, 3);
function change_comment_logged_in_notice( $translated_text, $untranslated_text, $domain ) {
switch( $untranslated_text ) {
case 'You must be <a href="%s">logged in</a> to post a comment.':
$translated_text = __( 'Вам необходимо <a href="%s">войти</a> для того, чтобы оставить комментарий.' );
}
return $translated_text;
}
2. Пояснение кода
- Функция
add_filter
: Эта функция подключает новый обработчик к определенному фильтру, в данном случае к фильтруgettext
. - Функция
change_comment_logged_in_notice
: Она берет оригинальный текст, проверяет, соответствует ли он тексту для изменения, и заменяет его на новый текст, который вы хотите отобразить.
3. Использование плагина для перевода
Если вы предпочитаете визуальный подход или хотите избежать редактирования кода, вы можете воспользоваться плагином Loco Translate. Этот плагин позволит вам находить и редактировать переводимые строки прямо из интерфейса WordPress.
- Установите и активируйте плагин Loco Translate.
- Найдите строку, которую хотите изменить, и внесите необходимые изменения.
4. Отображение форм входа и регистрации в всплывающих окнах
Если вы хотите сделать так, чтобы при нажатии на ссылку "войти" появлялась всплывающая форма, не отвлекая пользователя от текущей страницы, вам понадобятся дополнительные шаги.
4.1. Использование плагина
Вы можете использовать плагины, такие как WP Modal Login или Popup Login, которые обеспечивают всплывающие окна для форм входа и регистрации. Просто установите один из этих плагинов и настройте его по своему усмотрению.
4.2. Ручной подход
Если вы хотите создать свое решение, вы можете сделать следующее:
- Создайте HTML-код для формы входа и регистрационной формы и скройте их по умолчанию с помощью CSS.
- Используйте JavaScript, чтобы показать эту форму, когда пользователь щелкает на ссылку "войти" или "зарегистрироваться".
5. Скрытие оригинального текста
Если вы хотите полностью скрыть текст "Необходимо войти", вы можете воспользоваться простым CSS-кодом:
.comment-logged-out-notice {
display: none;
}
Такой код скроет текст для незарегистрированных пользователей. Однако вместо этого рекомендуется предложить пользователю форму для входа или регистрации, чтобы обеспечить более удобный пользовательский опыт.
Заключение
Изменение текста "Необходимо войти для комментария" и управление формами входа и регистрации — это важные аспекты, способствующие улучшению взаимодействия пользователей с вашим сайтом. Выберите метод, который вам больше подходит, будь то модификация кода или установка плагина, и позаботьтесь о том, чтобы ваши пользователи могли легко комментировать, не покидая страницу.