Поддержка Проблемы и решения Функции the_content(),the_title() и еще что-то нужно

  • Есть тестовый сайт с 1 рубрикой (id=1) и 3 записями в ней (id=1..3).

    Связанная тема: https://ru.forums.wordpress.org/topic/%d0%a4%d1%83%d0%bd%d0%ba%d1%86%d0%b8%d1%8f-pre_get_posts?replies=9

    Что нужно:

    Основное. Чтобы гостям сайта нельзя было просмотреть пост, зная его url. Посты на главной не видны (см. связ.тема), но если знать точный url — то пост можно увидеть.

    Нашел такое решение:

    function gu_hide_post($content){
    // Тут некие условия типа if !(Is_User_log_In() or Is_User_Admin)() // - работают
    {return "Индейская национальная изба";} else {return $content } } // что показываем
    // как реагируем
    add_filter('the_title', 'gu_hide_post');
    add_filter('the_content', 'gu_hide_post');
    add_filter('get_the_excerpt', 'gu_hide_post');

    Это работает, но выглядит некрасиво. Меняет заголовок и содержимое.

    Есть еще варианты (бесперспективные, типа вмешаться в код темы или теми же ф.ми просто пропускать вывод), но тогда они перестают учитываться при поиске и др. — т.е. ищем запись типа с\на «пост такой-то», показывает 5, а сверху пишет найдено 10.

    попытки впихнуть фильтры типа

    add_filter('the_post', 'gu_hide_post');
    add_filter('get_the_post', 'gu_hide_post');

    ясное дело ни к чему не приводят. Больше ничего не нашел 🙁

    Что нужно:

    1. При входе Гостя — запретить отображение таких постов. В идеале отображать текст вместо записи (чтобы не расходилось с количеством постов в поиске и страницами — с этим столкнулся, если их вывод скрывать).

    ++ на сколько понимаю при выводе поста (в заголовке см. ф. используется неск. функций? Нет ли одного объекта для обработки — или я не правильно понимаю)?

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

    add_filter(‘get_ALL_post’, ‘gu_hide_post’);

    чтобы в любом месте сайта вместо этого поста показывалась возвращаемая функцией строка, для тех, у кого не выполнены условия просмотра.
    Надеюсь понятно объяснил. Если нет — пишите, попробую более дотошно.
    Еще раз: Нужно чтобы если вошел не авторизованный — увидел Избу в таких постах (авторизован — обычный сайт).

    Спасибо. Всех с наступившими выходными 🙂

  • Тема «Функции the_content(),the_title() и еще что-то нужно» закрыта для новых ответов.