Использование oEmbed в комментариях WordPress
В этой статье мы рассмотрим, как добавить поддержку oEmbed в комментариях WordPress. Это облегчит вставку медиа-контента, например, видео или аудио, прямо в текст комментариев.
Что такое oEmbed?
oEmbed — это протокол, который позволяет вам вставлять медиа-контент, используя лишь URL. Это значит, что вам не нужно загружать видео или картинки на ваш сервер — достаточно ввести ссылку, и WordPress сам вставит необходимый контент.
Как настроить oEmbed в комментариях?
Для того чтобы включить oEmbed в комментариях, вам нужно добавить специальный плагин. Ниже приведен код, который поможет вам это сделать.
Код плагина
Скопируйте следующий код и вставьте его в файл вашего плагина или в файл functions.php
вашей темы:
<?php
/**
- Плагин: oEmbed в комментариях
- Описание: Позволяет использовать oEmbed в текстах комментариев.
- Версия: 1.2
- Автор: Эван Соломон, модифицировано Шеа Бандж
*/
class oEmbed_Comments {
/**
* Установка фильтра для oEmbed в комментариях
* @since 1.0
* @uses is_admin() Для того, чтобы не выполнять код в админке
* @uses add_filter Для регистрации фильтра
* @uses has_filter() Чтобы проверить, зарегистрирован ли фильтр
* @return void
*/
static function add_filter() {
if ( is_admin() )
return;
/* make_clickable мешает работе oEmbed, нужно установить фильтр раньше */
$clickable = has_filter( 'comment_text', 'make_clickable' );
$priority = ( $clickable ) ? $clickable - 1 : 10;
add_filter( 'comment_text', array( __CLASS__, 'oembed_filter' ), $priority );
}
/**
* Безопасное добавление oEmbed медиа в комментарий
* @since 1.0
* @param string $comment_text Текущий текст комментария
* @return string Измененный текст комментария
*/
static function oembed_filter( $comment_text ) {
global $wp_embed;
/* Автоматическое определение может быть риском для безопасности */
add_filter( 'embed_oembed_discover', '__return_false', 999 );
$comment_text = $wp_embed->autoembed( $comment_text );
/* Убедимся, что это не сломает ваши посты */
remove_filter( 'embed_oembed_discover', '__return_false', 999 );
return $comment_text;
}
}
add_action( 'init', array( 'oEmbed_Comments', 'add_filter' ));
Как работает код?
Объяснение функций
-
add_filter — Эта функция добавляет фильтр, который обрабатывает текст комментариев. Мы проверяем, находится ли пользователь в админке, и если да, то просто выходим из функции.
-
oembed_filter — Здесь мы обрабатываем текст комментариев. Мы отключаем автоматическое определение oEmbed, чтобы избежать возможных проблем с безопасностью, затем передаем текст комментария функции
autoembed
, которая автоматически преобразует URL в соответствующий медиа-контент.
Важные моменты
- Убедитесь, что функция
is_admin()
используется, чтобы избежать вызовов в административной панели WordPress. - Установите правильный приоритет для фильтров, чтобы они работали корректно.
Коррекция для AJAX функциональности
Если вы хотите, чтобы ваш плагин работал с AJAX, добавьте следующий код:
<?php
class oEmbed_Comments {
public function __construct() {
add_action( 'init', [ $this, 'add_filter' ] );
}
/**
* Установка фильтра для oEmbed в комментариях
*/
public function add_filter() {
global $pagenow;
$access_page = [ 'index.php', 'admin-ajax.php' ];
if ( ! in_array( $pagenow, $access_page ) ) {
return;
}
/* make_clickable мешает работе oEmbed, нужно установить фильтр раньше */
remove_filter( 'comment_text', 'make_clickable', 9 );
add_filter( 'comment_text', 'make_clickable', 12 );
add_filter( 'comment_text', [ $this, 'oembed_filter' ], 11 );
}
/**
* Безопасное добавление oEmbed медиа в комментарий
*
* @param string $comment_text Текущий текст комментария
* @return string Измененный текст комментария
* @since 1.0
*/
public function oembed_filter( $comment_text ) {
global $wp_embed;
/* Автоматическое определение может быть риском для безопасности */
add_filter( 'embed_oembed_discover', '__return_false', 999 );
$comment_text = $wp_embed->autoembed( $comment_text );
/* Убедимся, что это не сломает ваши посты */
remove_filter( 'embed_oembed_discover', '__return_false', 999 );
return $comment_text;
}
}
new oEmbed_Comments();
Итог
С помощью указанных выше шагов вы можете легко добавить поддержку oEmbed в комментарии вашего сайта на WordPress. Это улучшит взаимодействие пользователей с вашим контентом, делая их комментарии более информативными и интересными. Теперь ваши пользователи могут просто вставлять ссылки на медиа-контент и наслаждаться более удобной платформой для общения.
Применяйте эти техники для улучшения вашего сайта и увеличения вовлеченности аудитории!