Поддержка Проблемы и решения Скрыть пост в категории

  • Решено AlexOff

    (@alexoff)


    Здравствуйте. Появилась необходимость скрыть пост в категории и постраничной навигации, но оставить его доступным по старому урлу.

    Грубо говоря, чтобы пост не выводился по урлам:

    _http://www.site.ru/category/tratata/
    _http://www.site.ru/page/2/

    но был доступен по старому урлу

    _http://www.site.ru/tratata/post1/

    Проблема в том, что на проекте стоит реклама от гугла и он постоянно цепляется к этому посту. В самом посте рекламу отключить удалось, но вот в категориях и постраничной навигации — это сделать не получилось, тем более эти разделы динамические и при появлении новых постов урл доступа к проблемному посту меняется.

    Самое простое — это удалить пост, но он собирает много трафика … В этом вся и проблема (((

    Спасибо.

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Автор AlexOff

    (@alexoff)

    Пробовал реализовать путем создания отдельной страницы, но к сожалению нет возможности сделать урл, как был раньше (((

    Очень прошу помощи.

    Примерно так, функция для functions.php активной темы

    function exclude_post_from_category_archive( $query ) {
        $exclude = array( 777 ); // ID записи или нескольких записей через зпт
        if ( !is_admin() && is_category() ) {
            $query->set( 'post__not_in', $exclude );
        }
    }
    add_filter( 'pre_get_posts', 'exclude_post_from_category_archive' );

    Автор AlexOff

    (@alexoff)

    vjpo, спасибо большое, с категорией помогло. Осталось убрать на постраничной навигации.

    Подскажите пожалуйста, как этот код совместить с условием:
    is_home() && ! is_paged()
    http://codex.wordpress.org/Function_Reference/is_paged

    Сам так и не разобрался ((

    «на постраничной» — в смысле, на главной ? Подробности не помешают.
    Если в категориях и на главной, то как-то так
    if ( (!is_admin() && is_category()) || ($query->is_main_query() && $query->is_home()) ) {

    Условие is_paged() здесь второстепенно.

    Автор AlexOff

    (@alexoff)

    vjpo, пост старый, так что на главной он не выводится, но он присутствует на второй странице постраничной навигации. Когда делал уникальный тайт для главной, мне посоветовали использовать связку:

    <title>
    <?php
    if ( is_home() && ! is_paged() ) { echo "тайтл главной";}
    else
    { wp_title(''); }
    ?>
    </title>

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

    Автор AlexOff

    (@alexoff)

    Супер. Спасибо. Помогло !!! 😀

    Последний вопрос, за что отвечает условие !is_admin() ??? Просто под админом я тоже не вижу этот пост )))

    Последний вопрос, за что отвечает условие !is_admin()

    Исключить (не исполнять) фильтр в админке.
    http://codex.wordpress.org/Function_Reference/is_admin

    под админом я тоже не вижу этот пост

    Я вижу 🙂
    Пожалуйста.

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Тема «Скрыть пост в категории» закрыта для новых ответов.