Лучший способ создать правильную разметку для вставки в WordPress из PHP (импорт из другой CMS)

Мне было назначено импортировать большое количество контента из определенной базы данных, принадлежащей запатентованной системе CMS, к новой установке WordPress. После написания хорошего PHP-скрипта для извлечения записей и вставки их с помощью функции wp_insert_post() я теперь wp_insert_post() с проблемой.

То, что я хочу сделать, это «фильтровать» мою входную строку, которая является исходным контентом, в соответствии с форматом, используемым изначально WordPress, когда содержимое копируется в встроенный редактор. Например, так оно и будет выглядеть:

 <strong>UIR e OER</strong> &nbsp; Os verbos terminados em <strong>-uir</strong> e <strong>-oer</strong> terão as 2ª e 3ª pessoas do singular do presente do indicativo escritas com <strong>-i-</strong>: <strong> </strong> <strong>– tu possuis</strong> <strong>– ele possui</strong> <strong>– tu constróis</strong> ... 

Теперь, как исходный контент извлекается из исходной базы данных:

 <p>&nbsp;<b style="line-height: 150%; text-align: center;"><span style="font-size:13.5pt;line-height:150%; font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;; mso-fareast-language:PT-BR">UIR e OER</span></b></p> <p class="MsoNormal" style="mso-margin-bottom-alt:auto;line-height:150%"><span style="font-size:12.0pt;line-height:150%;font-family:&quot;Times New Roman&quot;,&quot;serif&quot;; mso-fareast-font-family:&quot;Times New Roman&quot;;mso-fareast-language:PT-BR">&nbsp;<o:p></o:p></span></p> <p class="MsoNormal" style="mso-margin-bottom-alt:auto;line-height:150%"><span style="font-size:12.0pt;line-height:150%;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;; mso-fareast-font-family:&quot;Times New Roman&quot;;mso-fareast-language:PT-BR">Os verbos terminados em <b>-uir</b> e <b>-oer</b> ter&atilde;o as 2&ordf; e 3&ordf; pessoas do singular do presente do&nbsp;indicativo escritas com <b>-i-</b>:<b> <o:p></o:p></b></span></p> <p class="MsoNormal" style="mso-margin-bottom-alt:auto;line-height:150%"><b><span style="font-size:12.0pt;line-height:150%;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;; mso-fareast-font-family:&quot;Times New Roman&quot;;mso-fareast-language:PT-BR">&nbsp;</span></b></p> <p class="MsoNormal" style="mso-margin-bottom-alt:auto;line-height:150%"><b><span style="font-size:12.0pt;line-height:150%;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;; mso-fareast-font-family:&quot;Times New Roman&quot;;mso-fareast-language:PT-BR">- tu possuis<o:p></o:p></span></b></p> <p class="MsoNormal" style="mso-margin-bottom-alt:auto;line-height:150%"><b><span style="font-size:12.0pt;line-height:150%;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;; mso-fareast-font-family:&quot;Times New Roman&quot;;mso-fareast-language:PT-BR">- ele possui<o:p></o:p></span></b></p> <p class="MsoNormal" style="mso-margin-bottom-alt:auto;line-height:150%"><b><span style="font-size:12.0pt;line-height:150%;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;; mso-fareast-font-family:&quot;Times New Roman&quot;;mso-fareast-language:PT-BR">- tu constr&oacute;is<o:p></o:p></span></b></p> 

Сначала казалось, что wp_insert_post() будет обрабатывать его автоматически, и на самом деле он выполняет некоторую обработку, однако этого недостаточно.

Вот как содержимое хранится в сценарии импорта:

 <p>&nbsp;<b style="line-height: 150%; text-align: center;"><span style="font-size:13.5pt;line-height:150%; font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;; mso-fareast-language:PT-BR">UIR e OER</span></b></p> <p class="MsoNormal" style="mso-margin-bottom-alt:auto;line-height:150%"><span style="font-size:12.0pt;line-height:150%;font-family:&quot;Times New Roman&quot;,&quot;serif&quot;; mso-fareast-font-family:&quot;Times New Roman&quot;;mso-fareast-language:PT-BR">&nbsp;<o:p></o:p></span></p> <p class="MsoNormal" style="mso-margin-bottom-alt:auto;line-height:150%"><span style="font-size:12.0pt;line-height:150%;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;; mso-fareast-font-family:&quot;Times New Roman&quot;;mso-fareast-language:PT-BR">Os verbos terminados em <b>-uir</b> e <b>-oer</b> ter&atilde;o as 2&ordf; e 3&ordf; pessoas do singular do presente do&nbsp;indicativo escritas com <b>-i-</b>:<b> <o:p></o:p></b></span></p> <p class="MsoNormal" style="mso-margin-bottom-alt:auto;line-height:150%"><b><span style="font-size:12.0pt;line-height:150%;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;; mso-fareast-font-family:&quot;Times New Roman&quot;;mso-fareast-language:PT-BR">&nbsp;</span></b></p> <p class="MsoNormal" style="mso-margin-bottom-alt:auto;line-height:150%"><b><span style="font-size:12.0pt;line-height:150%;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;; mso-fareast-font-family:&quot;Times New Roman&quot;;mso-fareast-language:PT-BR">- tu possuis<o:p></o:p></span></b></p> <p class="MsoNormal" style="mso-margin-bottom-alt:auto;line-height:150%"><b><span style="font-size:12.0pt;line-height:150%;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;; mso-fareast-font-family:&quot;Times New Roman&quot;;mso-fareast-language:PT-BR">- ele possui<o:p></o:p></span></b></p> <p class="MsoNormal" style="mso-margin-bottom-alt:auto;line-height:150%"><b><span style="font-size:12.0pt;line-height:150%;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;; mso-fareast-font-family:&quot;Times New Roman&quot;;mso-fareast-language:PT-BR">- tu constr&oacute;is<o:p></o:p></span></b></p> 

Моя первая идея заключалась в том, чтобы реализовать функцию самостоятельно, основываясь на preg_replace() и html_entity_decode() , однако мне кажется, что существует гораздо более элегантное решение. Здесь?

Изменить: Иными словами, делает ли PHP или сам WordPress способ обработки содержимого, например TinyMCE (который является встроенным редактором WordPress)? Естественно, я не могу полагаться на TinyMCE, потому что это инструмент JavaScript.

Solutions Collecting From Web of "Лучший способ создать правильную разметку для вставки в WordPress из PHP (импорт из другой CMS)"

В моем недавнем проекте нам нужно было сделать то же самое. Мы использовали следующие подходы:

  1. preg_replace для простейших задач.
  2. DOMDocument . Это отличный инструмент PHP для разбора HTML.
  3. (не-PHP) Основной импорт был сделан с узлом. С помощью нескольких необходимых настроек модуль узлов wp-cli является отличным инструментом для управления средами WordPress. Затем мы могли бы использовать cheeriojs для синтаксического анализа и изменения HTML.