У попередніх частинах цієї серії ми вивчили 30 WordPress фільтрів. У цьому уроці ми розглянемо чергові десять фільтрів і наведемо приклади їх практичного застосування.
Приступимо!
Фільтр для стилю галереї за замовчуванням
WordPress застосовує стилі до галереї з допомогою шорткода на основі якихось визначених CSS — стилів. Ви можете змінити їх вигляд, використовуючи фільтр use_default_gallery_style.
Приклад: відключаємо CSS – правила
Припустимо, ви вже прописали набір правил для теми у файлі style.css і не потребуєте правила CSS за замовчуванням. Використовуйте код, наведений нижче, щоб відключити їх:
Готово! Тепер WordPress не буде додавати тег з набором CSS – правил перед шорткодом .
Фільтрація вкладених URL-адрес
Цей фільтр працює з вкладеним URL – адресами, отриманими за допомогою функції з тією ж назвою wp_get_attachment_url().
Приклад: як уникнути повідомлень «Змішаний контент»
У разі використання шифрування на вашому сайті методом SSL, функція wp_get_attachment_url()може повернути URL з заголовком HTTP замість HTTPS, і результатом стане повідомлення «mixed content«. За допомогою коду, наведеного нижче, можна уникнути подібної ситуації:
Установка типу контенту для електронної пошти за промовчанням
За замовчуванням ви можете надсилати текстові листи в WordPress, поки функція wp_mail() використовує параметр text/plain в якості типу вмісту. З допомогою фільтра wp_mail_content_type можна це змінити.
Приклад: розсилаємо листи з WordPress в HTML — форматі
Якщо ви хочете відправляти електронну пошту в HTML-форматі, цей фрагмент коду, щоб змінити параметр «тип вмісту для листів»:
Зберігаємо IP — адреса коментатора
WordPress зберігає IP-адреса кожного коментатора в таблиці бази даних. Якщо вам необхідно використовувати ці дані – застосовуйте фільтр pre_comment_user_ip.
Приклад: зберігаємо дійсний IP – адреса коментатора
У випадку, коли користувач, коментує ваш пост, використовує проксі, WordPress зафіксує IP — адресу проксі, але не реальний адресу користувача. Справжній IP – адреса містить в HTTP – заголовку X-Forwarded-For. Код, наведений нижче, використовує функцію, яка бере потрібну адресу з заголовка і поміщає його в базу даних:
Якщо вам цікаво вивчити HTTP — заголовок X-Forwarded-For, відвідайте Wikipedia для додаткової інформації.
Зміна кількості резервних копій для збережених записів
Можливо, вам відомо, що WordPress має можливість зберігати версії публікацій, а також, бути може, ви знаєте, що існує можливість встановлювати кількість резервних копій постів шляхом додавання константи (WP_POST_REVISIONS) в файл wp-config.php.
А чи знаєте ви про те, що можна змінювати кількість версій не тільки для різних типів публікацій, але і в тому числі для окремих публікацій? Можна. Для цього призначений фільтр wp_revisions_to_keep.
Приклад: відключаємо можливість редагування певних типів публікацій
Можна змінювати кількість можливих поправок за допомогою змінної $post, але ми йдемо красивим та простим шляхом, тому обмежимо кількість можливих ревізій публікації для користувацького типу публікацій «event«:
post_type ) {
return 0;
}
return $num;
}
// Джерело прикладу: http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_revisions_to_keep
?>
У Кодексі WordPress можете знайти опис змінної $post і самостійно придумати нові способи застосування цього фільтра. Не забувайте ділитися вашими ідеями!
Перезапис шорткода
Шорткод дозволяє додавати текст до виведеної картинці. Якщо потрібно змінити вид, в якому виводиться цей шорткод – використовуйте приклад, який ми розберемо нижче.
Приклад: підписи до зображень з допомогою HTML5 — розмітки
В HTML5 з’явилися два нових тегів для роботи з зображеннями: і . У цьому прикладі ми перепишемо розмітку шорткодом з допомогою цих тегів:
»,
‘align’ => ‘alignnone’,
‘width’ => ‘ ‘,
‘caption’ => »
), $attr );
if ( 1 > (int) $attr[‘width’] || empty( $attr[‘caption’] ) ) {
return ‘ ‘;
}
if ( $attr[‘id’] ) {
$attr[‘id’] = ‘id=» ‘ . esc_attr( $attr[‘id’] ) . ‘» ‘;
}
$figure_atts = $attr[‘id’]
. ‘ class=»caption’ . esc_attr( $attr[‘align’] )
. ‘»‘ . ‘style=»max-width:’ . ( 10 + (int) $attr[‘width’] ) . ‘px;» ‘;
$output = «;
$output .= do_shortcode( $content );
$output .= «. $attr[‘caption’] . «;
$output .= «;
return $output;
}
// Джерело прикладу: http://codex.wordpress.org/Plugin_API/Filter_Reference/img_caption_shortcode
?>
Поекспериментуйте з цим кодом. Можливо, ви знайдете спосіб не використовувати ID для тега .
Додаємо класи публікацій
Фільтр і однойменна функція body_class популярна серед WordPress розробників. А як щодо post_class? Чи знаєте ви про те, що є і фільтр, і функція для додавання css класів до виведеним постам?
Приклад: Додаємо css клас для першого поста в циклі
Прекрасним прикладом буде користувальницький клас, який буде працювати тільки для першого поста в циклі публікацій. Розберемо, як це працює:
current_post ) {
$classes[] = ‘first-post’;
}
return $classes;
}
// Джерело прикладу: http://www.billerickson.net/code/first-post-class/
?>
Відтепер вам не потрібно використовувати псевдоклас :first в CSS і турбуватися про кросбраузерною сумісності – просто застосовуйте клас .first-post!
Додаємо користувальницькі поля для вкладень
В WordPress вкладення по суті дуже схожі на користувацькі типи публікацій, які можуть бути розширені так само, як і будь-які інші типи публікацій – просто трохи по-іншому. Фільтр attachment_fields_to_edit дозволить налаштувати поля для процесу завантаження або редагування вкладень.
Приклад: додавання ліцензійної інформації до завантажуваних зображень
Припустимо, у вас є блог, орієнтований на публікацію фотографій і вам необхідно встановлювати ліцензію на кожну завантажену фотографію. В цей раз ми скористаємося дією і додамо поле «License» для вкладень:
ID ‘license’, true );
$form_fields[‘license’] = array(
‘value’ => $field_value ? $field_value : »,
‘label’ => __( ‘Ліцензія’ ),
‘helps’ => __( ‘Визначає тип ліцензії для фотографії’ )
);
return $form_fields;
}
add_action( ‘edit_attachment’, ‘save_new_attachment_field’ );
function save_new_attachment_field( $attachment_id ) {
$license = $_REQUEST[‘attachments’][$attachment_id][‘license’];
if ( isset( $license ) ) {
update_post_meta( $attachment_id, ‘license’, $license );
}
}
// Джерело прикладу: http://codex.wordpress.org/Plugin_API/Filter_Reference/attachment_fields_to_edit
?>
Дивовижний приклад того, як можна розширити основні функції WordPress не вдаючись до редагування коду в ядрі.
Змінюємо довжину тексту витягу з публікації
За замовчуванням, витримка складається з перших 55 слів кожної публікації. Форматування до них не застосовується. Непарне число слів. Якщо виникає бажання змінити це число – використовуйте фільтр excerpt_length.
Приклад: змінюємо кількість слів у витягах з публікацій
Припустимо, я хочу залишити тільки 15 слів, тому що роблю сайт в стилі Pinterest і у мене є зовсім небагато місця для резюме публікацій. Все що мені потрібно для цього – взяти функцію, яка повертає число, і прив’язати її до крихітному фільтру:
Простіше простого!
Налаштовуємо меню в панелі адміністрування
На сторінках панелі адміністрування WordPress, безпосередньо під списком елементів (таких як «Публікації», «Сторінки», «Користувачі», «Медіа-файли і так далі), є кілька розділів, де ви можете обрати елементи та провести з ними потрібні дії. Фільтр, який описаний нижче, дозволить нам налаштувати їх під себе.
Приклад: відключаємо кошик
Уявіть, що у вас є новинний сайт, і ваш редактор тільки що відправив у кошик безліч статей. Якщо вам не потрібна функція кошика, просто відключіть її:
Змінна $screenid фільтра відповідає за ім’я розділу в панелі адміністрування, в який ви збираєтеся внести зміни. Список імен знаходиться на сторінці Довідник панелі адміністрування @ API Кодексу WordPress.
Кінець четвертої частини
Ми підійшли до кінця четвертої десятки з 50 фільтрів. Сподіваюся, вам сподобалася стаття, і ви почерпнули щось нове для себе. Побачимося на наступному уроці!
Мені цікаві ваші думки з приводу того, що нового ви дізналися. Залишайте ваші коментарі, якщо вам сподобалася стаття, не соромтеся поділитися нею!
Переклад статті «50 Filters of WordPress: Filters 31-40» був підготовлений дружною командою проекту Сайтостроение від А до Я.