Intereting Posts
Как устранить ошибки при регистрации / пароле электронной почты? Как получить данные из Advanced Custom post при поиске определенного ключевого слова или имени поля, связанного с этим сообщением? Как удалить поле ALT вложений изображения? Мои сообщения показывают 2 формы комментариев Штрих-коды Tinymce в содержимом короткого кода Возьмите фильтр из нескольких функций Как получить идентификатор пользователя, который выполняется приложением buddypress Как использовать wp_add_inline_style для пользовательского CSS, добавленного через короткий код? Пользовательский одиночный шаблон для определенной категории Изменение сообщения «Активированный плагин» Консультирование по шаблонам для пользовательских запросов Тема Ориона (из темы леса) Лицензирование плагина Как получить Довольно постоянные ссылки ($ wp_rewrite) до `INIT` действия? На ссылках – загружать вспомогательные страницы на самой родительской странице

Как скрыть все комментарии от зарегистрированных пользователей

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

Solutions Collecting From Web of "Как скрыть все комментарии от зарегистрированных пользователей"

Я бы порекомендовал искать все вхождения comments_template в вашей теме и обертывать их в is_user_logged_in condiational.

Пример:

 <?php if (is_user_logged_in()) { comments_template(); } 

В качестве альтернативы вы можете открыть comments.php вашей темы comments.php (или эквивалент, обычно это comments.php ) и добавить что-то вроде этого на самом верху:

 <?php if (!is_user_logged_in()) { return; } 

PHP позволит вам вернуться из файлов раньше, так что вы можете «заручиться» из include, как указано выше. Если вам нужно удалить комментарии по всем типам сообщений для не зарегистрированных пользователей, второй вариант, скорее всего, лучший. Если вам это нужно условно на некоторых типах сообщений, первое – лучшее.

Лучшим решением, однако, является использование ваших собственных фильтров. Вместо прямого вызова apply_filters вызовите apply_filters с уникальным именем и попробуйте по умолчанию попробовать.

 <?php // somewhere before all the other stuff in comments.php if (!apply_filters('wpse96406_show_comments', true)) { return; } 

Затем в functions.php закрепите свой собственный фильтр и измените его поведение.

 <?php add_filter('wpse96406_show_comments', 'is_user_logged_in'); 

Зачем это делать? Гораздо более гибкий.

Хотите оставить комментарий к определенным сообщениям? Первые два варианта выше не позволяют сделать это (без какого-либо рефакторинга). Использование собственного фильтра делает вещи гораздо более расширяемыми для вашего будущего пользователя или для конечных пользователей, если вы выпускаете тему.

Основываясь на более старой статье , я бы это сделал:

 <?php # -*- coding: utf-8 -*- /* Plugin Name: Show comments after login */ if ( ! function_exists( 'wpse_96406_comments_after_login' ) ) { add_filter( 'comments_template', 'wpse_96406_comments_after_login', 11 ); function wpse_96406_comments_after_login( $comments_template ) { return is_user_logged_in() ? $comments_template : __FILE__; } } 

Примечание. Это должен быть отдельный плагин; не помещайте этот код в тему.

Но вы также можете искать все вхождения comments_template() в своей теме и переносить их в условное.

Благодарю. Я решил это, написав пользовательскую функцию самостоятельно, основываясь на удалении формы комментариев из Genesis.