0

我有一个相当大的 WordPress .XML 导出文件,该文件来自我将要迁移到 Drupal 的博客。导出文件的一个明显问题是它缺少<p>任何段落中断的标签。但是,标签存在于实际站点上。

从我从 XML 文件中的原始文本中可以看出,段落之间有多个换行符,而这些换行符应该只有一个<p>标记。我希望<p>使用 RegEx 全局添加一个有换行符和大写字母的标签,但我不知道它是如何工作的。导出文件中包含相关文本的示例 XML 标记是:

<content:encoded><![CDATA[Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur gravida risus at sem interdum iaculis. Curabitur eget est tellus, quis viverra arcu. 


Cras posuere turpis imperdiet odio aliquet sollicitudin. Maecenas et neque eget quam fringilla tempor. Vivamus sodales vulputate consectetur. 


Sed ullamcorper elementum est, at dapibus orci fermentum vitae. Vivamus nisi turpis, pretium sed tincidunt et, dapibus at eros. Quisque neque magna, posuere eget eleifend ut.

从上面可以看出,应该是段落之间有多个换行符。我正在考虑 RegEx 的换行符/大写字母组合,以便只放入一个<p>标签并专门针对<content:encoded>XML 标签,这样我就不会在 XML 文件的其他地方添加标签。使事情变得更复杂的另一个问题是,某些段落已经具有<p>编辑器在自定义类中添加的标签,例如<p class="myclass">.

4

1 回答 1

1

这个问题之前在 StackOverflow 上讨论过。问题是,Wordpress 不会将 p 标签存储在其数据库中(如果您使用其所见即所得编辑器),这些标签是在呈现时由 wpautop() 函数创建的(而不是中断)。所以我编辑了 export.php 文件(运行 WP 3.4.1)并在那里添加了函数。您可以在 Pastebin 上看到结果(更改在第 375 和 376 行)。

<content:encoded><?php echo wxr_cdata( apply_filters( 'the_content_export', wpautop( $post->post_content ) ) ); ?></content:encoded>
<excerpt:encoded><?php echo wxr_cdata( apply_filters( 'the_excerpt_export', wpautop( $post->post_excerpt ) ) ); ?></excerpt:encoded>

您可以将整个代码复制并粘贴到文件 [root]/wp-admin/icides/export.php 中,然后再次运行导出。之前不要忘记备份文件 - 我不保证它适用于其他版本,但您可以了解如何编辑导出。

于 2013-11-25T13:59:20.353 回答