Wordpress 在主题激活时创建页面 - 使用此功能添加子页面

Posted

技术标签:

【中文标题】Wordpress 在主题激活时创建页面 - 使用此功能添加子页面【英文标题】:Wordpress Create pages on theme activation - add child pages using this function 【发布时间】:2014-09-04 14:07:25 【问题描述】:

我正在使用此功能添加有关主题激活的新页面:

/*************************************************
** Add home page
*************************************************/

if (isset($_GET['activated']) && is_admin())
        $new_page_title = 'Home';
        $new_page_content = '';
        $new_page_template = 'template-home.php';
        $page_check = get_page_by_title($new_page_title);
        $new_page = array(
                'post_type' => 'page',
                'post_title' => $new_page_title,
                'post_content' => $new_page_content,
                'post_status' => 'publish',
                'post_author' => 1,
        );
        if(!isset($page_check->ID))
                $new_page_id = wp_insert_post($new_page);
                if(!empty($new_page_template))
                        update_post_meta($new_page_id, '_wp_page_template', $new_page_template);
                
        

用完这个sn-p,我想创建很多页面。

/*************************************************
** Add new pages
*************************************************/



/*************************************************
** Add home page
*************************************************/

if (isset($_GET['activated']) && is_admin())
        $new_page_title = 'Home';
        $new_page_content = '';
        $new_page_template = 'template-home.php';
        $page_check = get_page_by_title($new_page_title);
        $new_page = array(
                'post_type' => 'page',
                'post_title' => $new_page_title,
                'post_content' => $new_page_content,
                'post_status' => 'publish',
                'post_author' => 1,
        );
        if(!isset($page_check->ID))
                $new_page_id = wp_insert_post($new_page);
                if(!empty($new_page_template))
                        update_post_meta($new_page_id, '_wp_page_template', $new_page_template);
                
        


/*************************************************
** Add About Us page
*************************************************/

if (isset($_GET['activated']) && is_admin())
        $new_page_title = 'About Us';
        $new_page_content = 'Coming Soon';
        $new_page_template = 'template-page-with-subnav.php';
        $page_check = get_page_by_title($new_page_title);
        $new_page = array(
                'post_type' => 'page',
                'post_title' => $new_page_title,
                'post_content' => $new_page_content,
                'post_status' => 'publish',
                'post_author' => 1,

        );
        if(!isset($page_check->ID))
                $new_page_id = wp_insert_post($new_page);
                if(!empty($new_page_template))
                        update_post_meta($new_page_id, '_wp_page_template', $new_page_template);
                
        


        /*************************************************
        ** Add Meet the Staff
        *************************************************/

        if (isset($_GET['activated']) && is_admin())
                $new_page_title = 'Meet the staff';
                $new_page_content = 'Coming Soon';
                $new_page_template = 'template-page-with-subnav.php';
                $post_parent = '';
                $page_check = get_page_by_title($new_page_title);
                $new_page = array(
                        'post_type' => 'page',
                        'post_title' => $new_page_title,
                        'post_content' => $new_page_content,
                        'post_status' => 'publish',
                        'post_author' => 1,
                        'post_parent' => $post_parent,
                );
                if(!isset($page_check->ID))
                        $new_page_id = wp_insert_post($new_page);
                        if(!empty($new_page_template))
                                update_post_meta($new_page_id, '_wp_page_template', $new_page_template);
                        
                
        

我想知道的是如何在子页面上设置post parent?

似乎 post 父级设置为 'post_parent' => [ ] // 设置新帖子的父级,如果有的话。默认 0。

但是说我用这个方法添加关于我们,然后想在下一个函数中添加会见员工,我如何获得会见员工的id?

干杯

【问题讨论】:

【参考方案1】:

$new_page_id 保存着刚刚创建的页面的ID(因为wp_insert_post函数的返回值是创建的帖子或页面的帖子ID)。

目前虽然每次创建新页面时都会覆盖此内容。

因此,您可以在每次创建页面时使用新变量来存储页面 ID,即每次创建页面时将 $new_page_id 更改为 $about_page_id、$home_page_id 等。例如

$about_page_id = wp_insert_post($new_page);

然后,为了能够设置“post_parent”,您需要首先创建父页面,以便您拥有用于子页面的适当 ID。并添加到页面创建数组中,例如

    $new_page = array(
            'post_type' => 'page',
            'post_title' => $new_page_title,
            'post_content' => $new_page_content,
            'post_status' => 'publish',
            'post_author' => 1,
            'post_parent' => $about_page_id
    );

【讨论】:

以上是关于Wordpress 在主题激活时创建页面 - 使用此功能添加子页面的主要内容,如果未能解决你的问题,请参考以下文章

当主题被激活时自动创建页面

更改 WordPress 默认激活电子邮件的主题和内容

wordpress如何让自己的主题支持菜单功能

php 当它被父主题隐藏时,重新激活Wordpress管理工具栏(白痴无处不在!)。在这种情况下,我只为广告重新启用它

Wordpress 主题在链接上阻止 target="_blank"。如何为某些外部链接重新激活它?

仅在 WordPress 中激活和停用插件时运行 JS 文件