Як правило, записи в WordPress публікуються зі статусом доступно для всіх. Але що робити, якщо ми хочемо розмістити у блозі запис, доступну тільки для близьких друзів, членів сім’ї або для редакторів сайту? Приховати вміст від широкої публіки можливо, для цього не потрібно вдаватися до допомоги плагінів.

Незалежно від того, чи ви хочете приховати вміст записи, коментарі, користувальницькі поля або будь-які інші елементи. У цій статті ми розглянемо кілька способів приховати різні компоненти запису.

Як приховати контент, витримки і коментарі

На сторінці редагування запису є метабокс з трьома варіантами видимості запису. Натисніть кнопку «Змінити» поряд з полем «Видимість: публічна» і в раскрывшейся панелі ви побачите три варіанти для цього параметра на вибір: «Відкрито», «Захищена паролем» і «Особиста»:

  • Якщо ви встановите прапорець для опції «Захищена паролем», вам відкриється поле для введення пароля, який буде запитуватися для перегляду цього запису. Зверніть увагу, що пароль не може бути довшим за 20 символів;
  • Якщо ви виберіть варіант «Особиста», то цей запис буде доступна тільки для користувачів вашого сайту з ролями «Адміністратор» або «Редактор».

Натисніть кнопку «OK«, щоб оновити налаштування видимості запису.

Натисніть кнопку «Опублікувати» (або «Оновити», якщо запис опублікована) і збережіть запис, щоб прийняти зміни:

Тепер WordPress буде відображати запис наступним чином:

  • Перед заголовком запису буде виводитися напис «Захищено«;
  • Якщо запис містить фрагмент, замість нього буде виводитися напис «Немає витримки, тому що ця стаття захищена«;
  • Замість вмісту запису з’явиться форма для введення пароля з текстом: «Ця стаття захищена паролем. Для її перегляду введіть, будь ласка, пароль:«

Як приховати вміст WordPress за допомогою функції захисту паролем

Захист користувальницьких полів

У наведеному вище прикладі реквізити ресторану відображаються ще до того, як користувач введе пароль. Причина цього полягає в тому, що в даному випадку інформація зберігається в метаданих запису.

Щоб не виводити користувальницькі поля на екран, ви можете «обернути» виклик get_post_meta() в умовний оператор, який оцінює значення, що повертається функцією post_password_required(). Він перевіряє, чи потрібна для даного запису пароль, а також був введений вірно:

ID ‘address’, true );
echo $restaurant address;
}
?>

Функція post_password_required() також може використовуватися, щоб не допустити висновок захищених паролем записів у списках, наприклад в результатах пошуку.

Захист фрагмента тексту

Приховування фрагментів від перегляду схоже на захист користувальницьких полів тим, що WordPress надає для цих цілей фільтр the_excerpt:

Можна просто вивести форму для введення пароля, викликавши метод:

get_the_password_form().

Настройка форми введення пароля

Фільтр the_password_form дозволяє налаштувати форму для введення пароля. Для цього форма повертається з функції, а не з допомогою echo, і для поля введення пароля встановлюється атрибут maxlength=»20″, щоб відповідати обмеження WordPress по довжині пароля:

ID ) ? rand() : $post->ID );
$form =’
‘. __( «To view this protected post, enter the password below:» ) . ‘
‘. __( «Password:» ) . ‘
‘;
return $form;
}
add_filter( ‘the_password_form’, ‘show_custom_password_form’ );
?>

Як повністю приховати захищені паролем запису

Може знадобитися повністю виключити захищені паролем запису з результатів пошуку, сторінок архівів і так далі. Це можна зробити за допомогою комбінації дії pre_get_posts і фільтра posts_where. Спочатку ми перевіряємо, містить сторінка кілька записів, і не перебуваємо ми в панелі адміністрування. Після цього ми видаляємо захищені паролем запису SQL-запитів, що виконуються WordPress, використовуючи фільтр posts_where:

posts}.post_password = » «;
}
// Вирішуємо, де виводити їх
function exclude_protected_posts($query) {
if( !is_single() && !is_page() && !is_admin() ) {
add_filter( ‘posts_where’, ‘exclude_protected’ );
}
}
// Дію, щоб поставити фільтр в чергу в потрібний час
add_action(‘pre_get_posts’, ‘exclude_protected_posts’);
?>

Висновок

Завдяки підключенню фільтрів і дій в WordPress можна захистити вміст записів без використання сторонніх плагінів.

Переклад статті «Hide WordPress Content using Password Protection» був підготовлений дружною командою проекту Сайтостроение від А до Я.