Подготовьте контент из другого CMS / WYSIWYG к редактору WordPress

Im в настоящее время в процессе написания плагина, который позволяет мне импортировать контент из другой системы управления контентом в WordPress.

Почти все работает так, как я хочу: каждая запись сохраняется с заголовком, контентом и отличным изображением. Мне даже удалось перенести и обновить изображения в области содержимого. Но теперь я борюсь с последней проблемой.

Если в контенте есть встроенное видео (youtube / vimeo), и я сохраняю его как iframe, он не ведет себя так же, как wordpress oEmbeds.

Обычно, когда вы вставляете URL-адрес в видео в редакторе WordPress, он генерирует для вас код для встраивания, сохраняя при этом только сохранение URL-адреса в базе данных. Я действительно не уверен, как это работает, но даже если я вычеркнул iframe из html и добавлю только URL-адрес, мне все же требуется, чтобы я пошел на почту и нажимал update, чтобы iframe работал на передней панели конец.

Еще одна вещь, которую я понял, заключается в том, что WordPress фактически не сохраняет

теги к базе данных, но если я вставляю данные из этой другой CMS, все теги html будут вставлены вместе с ней (конечно). Если я затем перейду к сообщению и нажимаю update – все данные будут отформатированы красиво.

Есть ли функция, которую я могу использовать для «подготовки» необработанного html, следующего из этого другого WYSISYG, прежде чем сохранять его в базе данных wordpress? Или есть способ сохранить вложения, чтобы заставить их работать?

Я чувствую, что ядро ​​WordPress должно использовать функцию при сохранении из редактора в базу данных, но я не могу ничего найти о такой функции.

Любые разъяснения по этому вопросу оцениваются.

Solutions Collecting From Web of "Подготовьте контент из другого CMS / WYSIWYG к редактору WordPress"

Оберните URL-адрес в [embed] коде [embed] . Это заставит wordpress вызывать его реализацию oEmbed.

  [embed]https://www.youtube.com/watch?v=YE7VzlLtp-4[/embed] 

Или, если вы хотите иметь возможность контролировать высоту / ширину

  [embed height="400" width="600"]https://www.youtube.com/watch?v=YE7VzlLtp-4[/embed] 

Обратите внимание, что это будет работать только для веб-сайтов, которые являются белым списком в WordPress . Вы можете добавить сайты в этот список, используя wp_embed_register_handler

редактировать
Если вы хотите проверить, находится ли ваш провайдер в белом списке, можете ли вы сделать что-то вроде этого (обратите внимание, что я никогда не тестировал ниже):

  function prefix_is_whitelisted_embed($url){ require_once( ABSPATH . WPINC . '/class-oembed.php' ); if ( did_action( 'plugins_loaded' ) ) { //if you do this before plugins are loaded you may prevent other plugins from adding urls to the whitelist $oEmbed = _wp_oembed_get_object(); return $oEmbed->get_provider($url) === false?false:true; } } 

Эта функция в основном проверяет, имеет ли URL-адрес зарегистрированного поставщика, используя объект WP oEmbed. Если это так, метод класса get_provider() возвращает провайдера, если он не должен возвращать bool false. Эта функция проверяет только этот bool false и возвращает на основе этого.