Фильтр для wp_embed_handler_youtube не работает

Вопрос или проблема

В WordPress 4.0, если я создаю новый пост и вставляю ссылку на YouTube напрямую в редактор постов, WordPress автоматически преобразует её в тег встраивания YouTube. Я пытаюсь изменить стандартный вывод для тега встраивания с помощью функции фильтра.

У меня есть следующий фрагмент кода:

add_action( 'wp_embed_handler_youtube', 'bigger_youtube_embeds', 10, 4);
function bigger_youtube_embeds($embed, $attr, $url, $rawattr) {
    // измените строку $embed...
    return $embed;
}

Я попробовал это после того, как ознакомился с следующей документацией: https://developer.wordpress.org/reference/hooks/wp_embed_handler_youtube/

Однако моя функция фильтра никогда не запускается, и я даже не уверен, когда она должна запускаться.

Немного поздно, но это может быть связано с тем, что это фильтр, а вы добавляете его как действие,

попробуйте

add_filter( 'wp_embed_handler_youtube', 'bigger_youtube_embeds', 10, 4);
function bigger_youtube_embeds($embed, $attr, $url, $rawattr) {
    // измените строку $embed...
    return $embed;
}

Ответ или решение

Конечно! Проблема, с которой вы столкнулись, связана с неправильным использованием хуков в WordPress. В вашем коде вы использовали функцию add_action, когда на самом деле вам нужно использовать add_filter, потому что вы пытались модифицировать выведенный HTML-код для встраивания видео с YouTube.

Вот правильный способ реализации вашей функции:

add_filter( 'wp_embed_handler_youtube', 'bigger_youtube_embeds', 10, 4 );

function bigger_youtube_embeds( $embed, $attr, $url, $rawattr ) {
    // Здесь вы можете изменить строку $embed...
    // Например, добавим атрибуты или изменим размеры видео
    $embed = str_replace( 'width="560"', 'width="800"', $embed );
    $embed = str_replace( 'height="315"', 'height="450"', $embed );

    return $embed;
}

Объяснение изменений:

  1. Использование add_filter: Подключая вашу функцию с помощью add_filter, вы создаете фильтр, который позволяет изменять HTML, генерируемый для YouTube-встраиваний.

  2. Параметры функции: Ваш фильтр принимает четыре параметра: $embed, $attr, $url и $rawattr. $embed — это строка HTML, которую вы можете изменить в соответствии со своими требованиями.

  3. Модификация строки: В примере выше показано, как изменить ширину и высоту встроенного видео. Вы можете адаптировать этот код для других нужд.

Почему ваш первоначальный код не работал:

  • Неправильный хук: Как было упомянуто, вы использовали add_action, что не предназначено для изменения контента. add_filter идеально подходит для этой задачи.

Проверка работы:

После внесения изменений убедитесь, что ваша функция включена в файл functions.php вашей темы или в плагин. Создайте новый пост с YouTube-ссылкой, и ваша функция должна корректно сработать, изменив выводимые параметры.

Если у вас возникнут дополнительные вопросы или возникнут другие проблемы, пожалуйста, дайте знать!

Оцените материал
Добавить комментарий

Капча загружается...