WordPress 5.7 增强了WordPress内置的导入/导出功能。
一个新的导出特定的文章标题过滤器
WP 5.7引入了为文章标题创建特定于导出的过滤器。
从WordPress 2.5和2.6开始, post_content
和 post_excerpt
都具有特定于导出的过滤器: the_content_export
和 the_excerpt_export
。 但是,post_title
使用了 the_title_rss
,它在两种重要方式上的行为有所不同:
- 它从字符串中剥离HTML标签
- 它对标题字符串进行HTML编码
这些行为对于导出而言并不理想,因为它会更改文章标题,从而导致导出文件中的数据丢失,并且在导入时不正确的文章重复匹配。此更改新增新的过滤器 the_title_export
,而不在该用途上使用 the_title_rss
。新的过滤器的用途和 the_content_export
、 the_excerpt_export
一样。
用法示例:为导出的文章标题添加前缀:
function wporg_edit_exported_title( $post_title ) {
$post_title = sprintf(
/* Translators: the post title. */
__( '[IMPORTED] %s', 'text-domain' ),
$post_title
);
return $post_title;
}
add_filter( 'the_title_export', 'wporg_edit_exported_title', 10 );
更多详情,请查阅#52250。
在导出文件中添加每个文章的最后修改日期
WP 5.7 添加 post_modified
和 post_modified_gmt
字段到所产生的WXR导出文件。
在确定文章的哪个版本是最新版本时,这可以提供更大的灵活性,并可以实现涉及更新和向现有文章或页面添加修订的导入逻辑。
这是RSS feed的新结构的示例(13-14行为新增字段):
<item>
<title><?php
echo $title; ?></title>
<link><?php
the_permalink_rss(); ?></link>
<pubDate><?php
echo mysql2date( 'D, d M Y H:i:s +0000', get_post_time( 'Y-m-d H:i:s', true ), false ); ?></pubDate>
<dc:creator><?php
echo wxr_cdata( get_the_author_meta( 'login' ) ); ?></dc:creator>
<guid
isPermaLink="false"><?php
the_guid(); ?></guid>
<description></description>
<content:encoded><?php
echo $content; ?></content:encoded>
<excerpt:encoded><?php
echo $excerpt; ?></excerpt:encoded>
<wp:post_id><?php
echo (int) $post->ID; ?></wp:post_id>
<wp:post_date><?php
echo wxr_cdata( $post->post_date ); ?></wp:post_date>
<wp:post_date_gmt><?php
echo wxr_cdata( $post->post_date_gmt ); ?></wp:post_date_gmt>
<wp:post_modified><?php
echo wxr_cdata( $post->post_modified ); ?></wp:post_modified>
<wp:post_modified_gmt><?php
echo wxr_cdata( $post->post_modified_gmt ); ?></wp:post_modified_gmt>
<wp:comment_status><?php
echo wxr_cdata( $post->comment_status ); ?></wp:comment_status>
<wp:ping_status><?php
echo wxr_cdata( $post->ping_status ); ?></wp:ping_status>
<wp:post_name><?php
echo wxr_cdata( $post->post_name ); ?></wp:post_name>
<wp:status><?php
echo wxr_cdata( $post->post_status ); ?></wp:status>
<wp:post_parent><?php
echo (int) $post->post_parent; ?></wp:post_parent>
<wp:menu_order><?php
echo (int) $post->menu_order; ?></wp:menu_order>
<wp:post_type><?php
echo wxr_cdata( $post->post_type ); ?></wp:post_type>
<wp:post_password><?php
echo wxr_cdata( $post->post_password ); ?></wp:post_password>
<wp:is_sticky><?php
echo (int) $is_sticky; ?></wp:is_sticky>
</item>
更多详情,请查阅#52180。
菜单项导入的性能更好
现在,wp_update_nav_menu_item()
函数可在更新菜单项时使用 wp_resolve_post_date()
。这允许将菜单项的 post_date
设置为特定值,而不仅仅是“now”。这使WordPress导入器可以执行更快,更准确的检查重复。
更多详情,请查阅#52189。