我正在尝试在我的wordpress插件中创建此功能。假设我有一定数量的页面永远不会改变,我想自动将它们导入到我设置的每个wordpress网站,而不必手动转到第一个站点,导出包含页面的xml文件,然后将其导入新的现场。有什么想法吗?
由于
答案 0 :(得分:1)
如果您知道如何遍历XML文件并且可以在其他站点上访问XML文件,则可以循环使用以下代码: -
// Create post object
$my_post = array(
'post_title' => wp_strip_all_tags( $post_title ),
'post_content' => $post_content,
'post_status' => 'publish',
'post_author' => 1,
'post_category' => $cat
);
// Insert the post into the database
wp_insert_post( $my_post );
您需要在安装插件时启动此代码。
答案 1 :(得分:0)
之后,您可以通过WP-CLI工具在每个网站上导入网页,并使用以下command:
$ wp import file-name.xml
WXR 代表WordPress扩展RSS。
答案 2 :(得分:0)
您可以将页面存储在一个数组中,然后在激活插件时自动插入它们。我建议为每个页面存储一个meta_key,让你知道它已经被插入,这样你就不会在每次激活和停用插件时都创建它们。您可以将它放在插件的主文件中。一定要用实际的页面名称替换带编号的页面和slugs,并用插件的命名空间替换“my_plugin”。
<?php
function create_my_plugin_pages() {
$pages = array(
'Page 1' => 'page-1', // Use slugs to create meta-keys
'Page 2' => 'page-2',
'Page 3' => 'page-3'
);
foreach( $pages as $title => $slug ) {
$meta_key = 'my-plugin_'.$slug;
// Check that the page wasn't already created
$existing = get_posts(array(
'post_type' => 'page',
'meta_query' => array(
array(
'key' => $meta_key,
'value' => '1'
)
)
));
// Create page if it doesn't exist
if ( !count($existing) ) {
$new_page = wp_insert_post(array(
'post_title' => $title,
'post_status' => 'publish'
));
add_post_meta($new_page,$meta_key,'1');
}
}
}
register_activation_hook( __FILE__, 'create_my_plugin_pages' );
?>