Два публичных статуса в WordPress

status-iconВ этом посте я расскажу, как сделать так, чтобы у вас в WordPress было бы два публичных статуса. Публичный статус присваивается постам (или другим объектам сайта), которые доступны пользователям без дополнительных условия (ввод пароля и т.д.).

Задача

Когда на сайте есть объекты, которые часто включаются-выключаются – то это не нравится поисковикам. Например, есть у нас объекты, которые размещаются на один месяц, а потом убираются, а потом снова могут быть размещены. Это вызывает т.н. эффект мигания. Поисковики такие страницы очень не любят. Поэтому необходимо сделать так, чтобы у таких объектов скрывались контакты, но сами они были доступны. Необходимо сделать в WordPress второй публичный статус (аналог статуса Public) для объекта сайта (custom post type), и реализовать логику отображения по этому статусу. При этом данные объекты должны скрываться из поиска, но быть доступными по прямой ссылке.

Решение

Для добавления новых статусов можно использовать функцию register_post_status, а можно поставить простенький плагин, который на гуевый манер будет добавлять новые статусы.

1. Ставим плагин EditFlow. Нас интересует его модуль Custom Statuses. Его особенность в том, что статусы можно привязывать не только к обычным постам, но и к кастомным объектам сайта (custom_post_type).

customstatus07_h660

 

2. Идём в настройки модуля плагина, удаляем статусы, которые он нам понаделал и добавляем новый.

3. По-умолчанию все статусы модуля не публичные. Чтобы наш статус стал публичным – делаем небольшое изменение в модуле (не люблю я это дело, но приходится).
в строку 245 файла /wp-content/plugins/eit-flow/modules/custom-status/custom-status.php

4. Теперь в том месте, где у нас идёт запрос списка постов добавляем фильтр по статусу в него (т.е. чтобы в списке отображались только посты со статусом pubish).

5. А вот пример работы логики вида (используется плагин Pods Framework).

Собственно результат достигнут.

Leave a Comment