it-swarm.cn

我是否可以在每次创建新博客时设置一些默认页面

创建新博客时,将自动创建“约”这样的页面。同样,我需要一些其他页面,这些页面应该在我的多站点下创建博客时自动显示。

如何在多站点下配置使用新博客创建的默认页面?

例如:如果我在example.com上有一个多站点。在此站点下创建的每个博客都应包含Home,About,My store,My address。

6
user391

我建议在functions.php文件中创建一个与action hook activate_blog绑定的函数。使用WordPress函数 get_pages() 查看您的默认页面是否存在。如果没有,请使用 wp_insert_post 创建它们。

add_action('activate_blog','my_default_pages');

function my_default_pages(){
    $default_pages = array('About','Home','My Store','My Address');
    $existing_pages = get_pages();

    foreach($existing_pages as $page){
        $temp[] = $page->post_title;
        }


    $pages_to_create = array_diff($default_pages,$temp);

    foreach($pages_to_create as $new_page_title){

            // Create post object
            $my_post = array();
            $my_post['post_title'] = $new_page_title;
            $my_post['post_content'] = 'This is my '.$new_page_title.' page.';
            $my_post['post_status'] = 'publish';
            $my_post['post_type'] = 'page';



            // Insert the post into the database
            $result = wp_insert_post( $my_post );

        }
        }

要在您自己的站点上测试此功能,请尝试将挂钩设置为wp_head。它将在每个页面加载时运行,并插入不存在的页面,内容在$ my_post ['post_content']中。 *在多站点上下文中创建博客时,是否会运行'activate_blog'挂钩?我不知道。*

请参阅我链接到的wp_insert_post的codex页面,以获取可用的默认参数的完整列表。

12
kevtrout

使用“wpmu_activate_blog”而不是“activate_blog”。它对我有用。谢谢

2
user2325