Использование oEmbed в комментариях WordPress: руко��одство

Использование 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' ));

Как работает код?

Объяснение функций

  1. add_filter — Эта функция добавляет фильтр, который обрабатывает текст комментариев. Мы проверяем, находится ли пользователь в админке, и если да, то просто выходим из функции.

  2. 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. Это улучшит взаимодействие пользователей с вашим контентом, делая их комментарии более информативными и интересными. Теперь ваши пользователи могут просто вставлять ссылки на медиа-контент и наслаждаться более удобной платформой для общения.

Применяйте эти техники для улучшения вашего сайта и увеличения вовлеченности аудитории!

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *