» » » Как скрыть страницу или категорию без плагина.
logotip

Как скрыть страницу или категорию без плагина.

Рад вновь приветствовать всех читателей  SEO-Mayak.com! В моей недавней статье мы уже рассматривали тему, как скрывать страницы с помощью плагина Advanced Category Excluder

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

Я уже не раз высказывался по поводу плагинов, хочу лишь немного дополнить. Если Вы совершенно ни чего не понимаете в языках программирования и не читаете обыкновенный HTML и CSS не говоря уже о скриптах, то наверное на начальном этапе будет оправданным использование плагинов для увеличения функциональности блога.

А представьте, в один прекрасный день количество уникальных посетителей у вас перевалит за 1000 и ваш блог заметно замедлит перелистывание страниц , а если будет 5 тысяч «уников»  и к примеру 500 статей, то Ваш блог будет изнурять посетителей ожиданием, а ни кто, как известно,  не любит ждать.  Поисковики в свою очередь начнут отодвигать такой блог от греха  подальше.

kak skryt' stranicu

По-этому использование всевозможных скриптов и функций, которые заменяют плагины очень даже разумно и правильно!

На моем кулинарном блоге DomMenu.ru достаточно невидимых страниц и все они скрыты с применением команды — exclude. Если вы читали мою прошлую статью, плагин для скрытия страниц, который мы там  рассматривали назывался Advanced Category Excluder. Как видите последнее слово в плагине и наша команда exclude очень схожи.

Exclude в переводе означает — скрыть, утаить. С помощью этого слова можно скрыть не только страницу, но и любую категорию из видимых мест блога, это нам и надо.

Как же это осуществить? На самом деле сложного ни чего нет.

Исключаем страницы

Открываем файл который отвечает за шапку сайта header.php, который находится ->  wp-content/themes/Название темы/header.php

Находим в нем такую строчку:

<?php wp_list_pages('exclude=710,578,632&depth=1&sort_column=menu_order&title_li=' ); ?>

У всех эта строчка может отличатся, но это нормально. Я ниже напишу и разберу по полочкам кусочек из этого кода:

exclude=710,578,632& 

Это и есть наша команда на исключение страниц, где:

exclude — команда,

710,578,632 — ID исключаемых страниц через запятую. Если Вы вдруг не знаете что такое ID и с чем его едят, то читайте статью — «Как узнать ID страницы, категории или записи»

& — Разделитель

В некоторых шаблонах бывает,что эта команда уже прописана в строчке, но без указания ID страниц, т.е. пустая команда, встречалось мне такое. В таком случаи надо просто добавить ID, а не дублировать команду.

Если вы вставляете команду exclude в конец строчки, то разделитель & должен стоять спереди, вот так:

&exclude=710,578,632

Надеюсь понятно…

Но что делать тем веб-мастерам, у которых страницы выводятся функцией:

<?php art_menu_items(); ?>

В современных шаблонах это функция используется довольно часто и поэтому давайте и с ней поработаем.

С помощью бесплатного текстового редактора Notepad++ отрываем для редактирования файл functions.php, который находиться в папке с вашей темой и ищем функцию с одноименным названием. Выглядит она так:

function art_menu_items()
{
 $homeMenuItemCaption = <<<EOD
Главная
EOD;
 $showHomeMenuItem = true;
 $isHomeSelected = null;
 if ('page' == get_option('show_on_front')) {
 $pageOnFront = get_option('page_on_front');
 $pageForPosts = get_option('page_for_posts');
 if ($pageOnFront) {
 $page = & get_post($pageOnFront);
 if (null != $page)
 $homeMenuItemCaption = apply_filters('the_title', $page->post_title);
 $isHomeSelected = is_page($page->ID);
 } elseif (!$pageOnFront && $pageForPosts) {
 $page = & get_post($pageForPosts);
 if (null != $page)
 $homeMenuItemCaption = apply_filters('the_title', $page->post_title);
 }
 }
 if (null === $isHomeSelected)
 $isHomeSelected = is_home();
 if (true === $showHomeMenuItem || 'page' == get_option('show_on_front'))
 echo '<li><a' . ($isHomeSelected ? ' class="active"' : '') . ' href="' . get_option('home') . '"><span><span>'
 . $homeMenuItemCaption . '</span></span></a></li>';
 add_action('get_pages', 'art_header_page_list_filter');
 add_action('wp_list_pages', 'art_list_pages_filter');
 wp_list_pages('title_li=');
 remove_action('wp_list_pages', 'art_list_pages_filter');
 remove_action('get_pages', 'art_header_page_list_filter');
}

В разных шаблонах функция может быть прописана по разному, но это не страшно. Нам понадобиться строчка, расположенная ближе к концу::

wp_list_pages('title_li=');

Где надо вставить, вышеупомянутую команду exclude, с ID страниц, которае надо скрыть. Например:

wp_list_pages('exclude=710,578,632&title_li=');

Сложного ничего нет. Идем дальше.

Исключаем категории

Теперь, как исключить категорию из видимых зон блога.

Во многих шаблонах категории отображаются в 2 местах-  это шапка сайта (header.php) и сайдбар (sidebar.php), иногда бывают еще в подвале (foote.phpr).

Расположены все эти файлы в папке с Вашей темой (шаблоном),  путь -> wp-content/themes/Название темы/Нужный файл.php

Находим там что-то похожее на такую строчку:

<?php wp_list_categories('depth=1&hide_empty=0&orderby=name&order&exclude=1&=ASC&title_li=' ); ?>

На этом примере команда exclude расположена в центре кода

&exclude=1&

И поэтому она находится между разделителей & 

Вот такой код, отвечающий за вывод категорий находится в моем файле sidebar.php:

<?php wp_list_categories('exclude=1&hide_empty=0&show_count=1&title_li='); ?>

Во всех случаях команда exclude прекрасно работает и делает совершенно ненужным использование плагина.

Кстати, у плагина Advanced Category Excluder есть один недостаток. Он не работает на странице с ошибкой 404!

Что за страшное название — «Страница с ошибкой 404»? Вы точно узнаете, если подпишитесь на обновления блога!

На сегодня у меня все. Удачи всем!

С уважением, Виталий Кириллов

Комментарии: 34

  1. Наталья:

    Благодаря вышеописанному удалось успешно избавиться от плагина, исключающего категории от посетителей и спрятать страничку, предназначенную только для посетителя, оставившего свой самый первый комментарий на сайте. Сайтик немного полегчал, что надеюсь скажется на скорости его загрузки. Вообще, методы позволяющие исключить тот или иной плагин мне больше всего нравятся. Только не все подходят. а это очень простой и действенный. Спасибо!

    Ответить
    • админ:

      И вам спасибо Наталья! Буду стараться и дальше публиковать актуальные и интересные статьи.

      Ответить
  2. Анна:

    Я поначалу так увлеклась плагинами, что понаставила их аж 64 штуки. Сейчас осталось их у меня менее 20. И работаю над тем, чтобы убрать еще 1-2. Замедляют они работу сайта. Чем их меньше, тем лучше.

    Ответить
    • админ:

      Анна, рад снова Вас видеть на моем блоге! Некоторые плагины заменить увы пока сложно и я постоянно работаю над поиском «обходных вариантов». Хочу заметить, что плагины далеко не самый злейший враг для скорости загрузки сайта. Ожидайте свежих статей.

      Ответить
  3. Анна:

    Не успеваю и статьи ставить, и что-то серьезное делать на блоге. С плагинами проще все делать, но они замедляют работу. Нужно искать оптимальное решение.

    Ответить
  4. Наталья:

    В очередной раз воспользовалась данным постом и закрыла страницу поиска. Так что пользуюсь публикациями сайта вместо шпаргалок 😉 Очень удобно!

    Ответить
  5. Татьяна Румянцева:

    Прекрасная идея — страница появляется как по волшебству!
    Спрятать страницу оказывается не так уж и просто если ты новичок вроде меня.
    Я бы уже и бросила это дело — ну не получается и все тут……
    Но вот профессионализм и мастерство Виталия сделали свое дело!
    И теперь — добро пожаловать ко мне на сайт http://www.tsrumori.com — все как нужно.
    Страничка спрятана.
    Спасибо Виталий!
    Искренне желаю вам успехов1
    С ув. Т.С

    Ответить
    • Виталий Кириллов:

      Пожалуйста Татьяна. Хотел уточнить, для остальных, что помогаю я справляться с проблемами только подписчикам блога!

      Ответить
  6. Елена:

    Спасибо, у меня все получилось, страничку спрятала и даже без плагина. Супер! Спасибо за статью!

    Ответить
    • Виталий Кириллов:

      Пожалуйста Елена!

      Ответить
  7. Валентина:

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

    Ответить
  8. Валентина:

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

    Ответить
    • Виталий Кириллов:

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

      Ответить
      • Валентина:

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

        Ответить
        • Виталий Кириллов:

          Не стану спорить.

          Ответить
  9. Ольга:

    Не получается ничего сделать ни с плагином, ни без плагина((( с плагином страница «Спасибо за комментарий» никуда не пропадает, так уныло и «висит» в шапке сайта, а без плагина вообще в теме не нахожу и близко тех строчек, которые Вы написали((( Что ж такое не везет и как с этим бороться?..последнее время каждый день упираюсь в недостатки своего шаблона…так, например, плагин про корректное отображение слова «комментарии-комментариев» тоже не работает…Вы, Виталий, знаете что-нибудь об этом?

    Ответить
    • Виталий Кириллов:

      Ольга, можно работать с любым шаблоном, просто надо его хорошо изучить. В файле functions.php вам надо найти что-то похожее на функцию «art-hmenu» и прописать в ней команду «exclude», как показано в статье.

      Ответить
  10. Алексей:

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

    Ответить
    • Виталий Кириллов:

      Алексей, рад видеть Вас на блоге и спасибо за оценку моего скромного труда!

      Ответить
  11. Ольга:

    Уважаемый, Виталий!
    Помогите без вас я никак не разберусь.
    у меня большая нагрузка на сервер и я пытаюсь разобраться с плагинами, перенастраиваю их. Удалила плагин, который скрывал страницы. Пытаюсь их скрыть без плагина.
    Но не найду строчки в тех шаблонах, что вы пишите.
    строчку —
    я нашла, она выглядит вот так:
    ID); ?>
    и нашла ее в Шаблон-е страницы (page.php)
    Можно ли менять этот шаблон???
    Если можно, то куда вставить ID-ы страниц???

    Ответить
    • Виталий Кириллов:

      Ольга, код не прошел. Заключайте код в теги [ php][ /php] (без пробелов), чтобы он нормально отображался.

      Ответить
  12. Анастасия:

    Спасибо, очень подробно и понятно!

    Ответить
  13. Ольга:

    Уважаемый, Виталий! Я создала свои страницы без плагина: Спасибо за комментарий и Поиск по сайту (Яндекса). Хочу их закрыть.
    Но У меня на Редактирование страницы есть Атрибуты страницы. в котором есть шаблоны для :
    Карта сайта
    Контакты
    Подписаться
    А на остальных пяти страницах вставлены: шаблоны «по умолчанию»
    Что мне делать и как их закрыть??
    Спасибо

    Ответить
    • Виталий Кириллов:

      Ольга, какие шаблоны, куда вставлены и почему вы их хотите закрыть?
      Попробуйте объяснить еще раз!

      Ответить
  14. Александр:

    Полезная статья и хорошая подача информации — спасибо.

    Ответить
  15. Николай:

    А что мне делать , если ни в header.php? ни в functions.php нет wp_list_pages. Как мне спрятать страницу?

    Ответить
    • Виталий Кириллов:

      Николай, возможно у вас страницы выводятся функцией wp_page_menu?

      Ответить
  16. Антон:

    Здравствуйте Виталий! Подскажите пожалуйста, а как скрыть страницу если у меня нет wp_list_pages в файле functions.php и функции арт_меню нет. Где нужно искать? Версия вордпресс 4.3

    Ответить
    • Виталий Кириллов:

      Антон, от версии WordPress это не зависит, а зависит от шаблона, а шаблоны все разные и в слепую я не могу сказать, где искать.

      Ответить
  17. itachik:

    А как с индексацией спрятанной страницы, если на неё не ведёт никаких ссылок кроме скрытой?

    Ответить
  18. Дмитрий:

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

    Ответить
  19. Юрий:

    Виталий, расширенный поиск через Total Commander в моей теме ни в одном из файлов не находит описанные вами слова. Смотрю в комментариях, не только у меня так. Как же в таком случае быть?

    Ответить
    • Виталий Кириллов:

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

      Ответить

Оставить комментарий

Внимание комментатор! Прежде чем вставить: HTML, JavaScript или PHP код в свой комментарий, преобразуй его в html сущность!

Subscribe without commenting

» Подписаться на комментарии по RSS