Отключаем срабатывание Embed в WordPress через сниппет и плагин Disable Embeds
Функция oEmbed в WordPress, о которой сегодня пойдет речь, появилась в версии 4.4. Она позволяет автоматически встраивать на сайт информацию из внешней веб-страницы по ссылке, указанной в текстовом редакторе. То есть вы, например, размещаете в посте линк на Twitter, Youtube, а система тут же «подхватывает» соответствующее содержимое из этого источника. Все ресурсы, поддерживающие данную фишку, называются oEmbed провайдерами, и с недавних пор Вордпресс также к ним присоединился. Как и в случае с отключением Emoji, логично, что опция пришлась по душе не всем, поэтому сегодня рассмотрим как убрать срабатывание Embed в WordPress.
Плюсы / минусы oEmbed
В принципе, здесь есть свои положительные стороны. Если вы часто делаете какие-то отсылки на другие блоги, то подобные вставки могут быть достаточно удобны, т.к. они кроме самого линка добавляют также иллюстрацию + небольшой анонс. Вот так выглядят разные варианты размещения ссылок:
Визуально вторая реализация смотрится гораздо красивее. Плюс вам не нужно тратить время на вставку ссылки в картинку или в текст.
Если говорить о недостатках, то здесь можно выделить:
- Дополнительную нагрузку на сайт, т.к. Embed в Вордпресс внедряет соответствующий скрипт в код страницы и заодно создает лишние HTTP запросы.
- Иногда опция раздражает, когда нужно просто добавить список обычных линков в черновик статьи (например для последующего редактирования), а они автоматически заменяются.
- Возможно, вам не хочется чтобы другие веб-проекты автоматически считывали информацию из вашего (пусть даже короткий анонс с картинкой).
По каким бы причинам вы не решились убрать данную фишку, выбирайте один из следующих методов.
Плагин Disable Embeds
Модуль упоминается практически во всех статьях по теме, к тому же у него 10тыс. скачиваний, что тоже свидетельствует о некой популярности. Оценка почти максимальная, обновление было недавно. Настроек здесь нет, Disable Embeds работает сразу после активации.
Основные функции:
- отключение возможности встраивания своего контента на других ресурсах;
- предотвращения автоматического срабатывания oEmbed в WordPress (кроме сайтов из белого списка, правда, о них в описании ничего не сказано);
- удаление всех JavaScript, связанных с этой фишкой.
Учитывая наличие кэширования в системе, предыдущие «вставки», которые вы добавляли ранее, могут работать. Однако ваши коды на сторонних сайтах — нет.
Есть в сети и другие подходящие WP модули, в том числе комплексные решение по типу Clearfy, Wp-Disable и др., где деактивация oEmbed является лишь одной из множества функций. Если вы используете что-то похожее, то ставить дополнительно Disable Embeds, скорее всего, нет смысла.
Решение задачи без плагинов
На скриншоте-примере выше, как видите, ссылка из WordPressInside не была преобразована. Вероятно, потому что я ранее добавлял некий код при оптимизации WordPress Header блока, хотя встраивание в самом блоге все еще работает.
Дабы полностью избавиться от срабатывания oEmbed, нужно разместить в functions.php куда более сложный код:
function disable_embeds_code_init() { // Remove the REST API endpoint. remove_action( 'rest_api_init', 'wp_oembed_register_route' ); // Turn off oEmbed auto discovery. add_filter( 'embed_oembed_discover', '__return_false' ); // Don't filter oEmbed results. remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 ); // Remove oEmbed discovery links. remove_action( 'wp_head', 'wp_oembed_add_discovery_links' ); // Remove oEmbed-specific JavaScript from the front-end and back-end. remove_action( 'wp_head', 'wp_oembed_add_host_js' ); add_filter( 'tiny_mce_plugins', 'disable_embeds_tiny_mce_plugin' ); // Remove all embeds rewrite rules. add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' ); // Remove filter of the oEmbed result before any HTTP requests are made. remove_filter( 'pre_oembed_result', 'wp_filter_pre_oembed_result', 10 ); } add_action( 'init', 'disable_embeds_code_init', 9999 ); function disable_embeds_tiny_mce_plugin($plugins) { return array_diff($plugins, array('wpembed')); } function disable_embeds_rewrites($rules) { foreach($rules as $rule => $rewrite) { if(false !== strpos($rewrite, 'embed=true')) { unset($rules[$rule]); } } return $rules; } |
function my_deregister_scripts(){ wp_dequeue_script( 'wp-embed' ); } add_action( 'wp_footer', 'my_deregister_scripts' ); |
Источник решения эта статья. Конечно, при внедрении следует помнить, что допущенные ошибки могут «сломать» сайт, поэтому советую сделать запасную версию файла функций перед его изменением.
Итого. В принципе, отключать Embed в WordPress не обязательно, данная фишка в большинстве случаев никакого плохого эффекта не делает. С другой стороны, если вы точно не собираетесь ее использовать, можно все же деактивировать через сниппет или модули.
комментариев 5 к статье “Отключаем срабатывание Embed в WordPress через сниппет и плагин Disable Embeds”
Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!
Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:
- Як сховати відсутні товари в Woocommerce шорткодах та схожих товарах
- Сервіс AdMaven + плагін для монетизації трафіка на WordPress сайтах
- Плагіни для створення стрічки новин з біжучим рядком в WordPress
- Як змінити розміщення кнопки оформлення замовлення в WooCommerce
- Плагін WHWS Display In Stock Products First – відображення товарів в наявності першими
- Підписка MonsterONE: чи варто використовувати цей сервіс у 2023 році? (+5 продуктів, які треба скачати в першу чергу)
- Онлайн генератор ссылок на мессенджеры для WordPress и не только
- WooCommerce (46)
- Безопасность (12)
- Видео (6)
- Виджеты (28)
- Возможности (141)
- Вопрос-ответ (6)
- Начинающим (52)
- Новости (46)
- Оптимизация (23)
- Плагины (246)
- Сервисы (87)
- Хаки и секреты (87)
- Шаблоны (45)
- Записи и посты wordpress, оформление записи (5,91 из 7, голосов - 47)
- Проблема с адаптивными изображениями в Gutenberg редакторе WordPress (3,93 из 7, голосов - 44)
- Умный копирайт в footer.php для wordpress (5,63 из 7, голосов - 30)
- Обновление плагинов и тем в WordPress: автоматическое, через FTP, скрытие уведомлений (5,19 из 7, голосов - 31)
- Polylang — плагин для мультиязычных сайтов на нескольких языках в WordPress (4,42 из 7, голосов - 31)
- Плагин TinyMCE Advanced – wordpress текстовый редактор (6,35 из 7, голосов - 20)
- Рубрики и категории wordpress, функция wp_list_categories (6,05 из 7, голосов - 20)
- Дизайн Мания - о веб-дизайне и не только.
- Tod's Blog - все про заработок онлайн.
- Вебдванольные заметки - обзоры веб-сервисов.
- Советы по выбору холодильника LG с технологией No Frost
- Зачем нужны Wi-Fi ретрансляторы и как выбрать подходящую модель
- Введение в онлайн-казино Slotor777: многообразие игр и привлекательные бонусы
- Необходимость использования облачного хранилища в наше время, что важно и как выгодно?
- Спрощення процесу звітності за допомогою програми BAS Бухгалтерія
- Технологія підключення інтернету GPON та її переваги
- За що гравці найбільше цінують Lineage 2
- Для каких проектов нужна аренда виртуального сервера и что такое VPS
А мне больше нравится вариант со втроенным (Embed) блоком — там и картинка, и анонс.. а не просто унылая ссылка. По моему разработчики наоборот все полезную фишку сделали.
Маша, согласен, в некоторых случаях он действительно смотрится более предпочтительно. Хотя в целом выбор зависит от специфики проекта и предпочтений его автора.
Отключение Embed, конечно, вопрос спорный, но за инструкцию все равно лайк!)
Раздражает постоянный появляющийся Embed при постинге, спс за плагин — помогло.
Скажите пожалуйста, как поменять CSS стили у вставок WP?