Додавання спеціальних атрибутів зображення WordPress
Коли справа доходить до роботи з the_content, це просто.
- Налаштуйте фільтр, підключений до the_content,
- визначити функцію, яка приймає вміст вхідного повідомлення,
- внесіть свої зміни,
- повернути змінений вміст.
І в більшості випадків це все, що потрібно. Але бувають моменти, коли вам може знадобитися зробити більш складні речі.
Наприклад, можливо, ви захочете включити вміст із зовнішнього шаблону. Або, можливо, ви захочете додати атрибути до зображень, які знайдете в публікації.
Зробити це за допомогою регулярного виразу може бути важко (оскільки HTML є нерегулярною мовою), але за допомогою DOMDocument PHP це не так вже й погано.
Ідея цього коду, який я збираюся показати, така:
- шукайте теги img у публікації,
- переглядати все, що знайдеться,
- додати атрибути,
- зберегти HTML,
- повернути результат.
Зверніть увагу, що вам може знадобитися налаштувати це відповідно до власних потреб, але основний код , який вам знадобиться, це :
<?php
private function addImageAttributes($content)
{
$content = mb_convert_encoding($content, 'HTML-ENTITIES', "UTF-8");
$document = new DOMDocument();
libxml_use_internal_errors(true);
$document->loadHTML(utf8_decode($content));
$images = $document->getElementsByTagName('img');
foreach ($images as $image) {
$image->setAttribute('data-example', 'true');
}
return $document->saveHTML();
}
Для тих, хто не знайомий з DOMDocument і тим, що відбувається в коді вище (наприклад, чому певні функції викликаються перед обробкою розмітки), ось короткий виклад:
- mb_convert_encode .Це візьме кодування символів вхідних даних і перетворить його на UTF-8 (на основі коду вище, але це може бути щось інше).
- libxml_use_internal_errors. Це вимкне будь-які звіти про помилки, і всі ми, як програмісти, зможемо самостійно отримувати помилки.
- utf8_decode. Це декодує інформацію в рядку з UTF-8 на ISO-8859-1. Причина, по якій ми це робимо, полягає в тому, що більшість сторінок матимуть набір символів, визначений як останній, і нам потрібно, щоб він був закодований для першого, щоб його обробити.
Тим не менш, я також рекомендую прочитати DOMDocument для отримання додаткової інформації про все, що відбувається вище.
Тим не менш, як тільки ви скористаєтеся цією функцією, як описано вище, ви матимете спеціальний атрибут прикладу даних зі значенням true на зображеннях у вашій публікації.