I know how to create pages automatically when a theme is activated, but I need help to figure out how to also programmatically create child pages at the same time.
For example:
- Page 1
- Page 1.1
- Page 1.2
- Page 2
- Page 2.1
- Page 2.2
- Page 2.3
- Page 3
- Page 3.1
- Page 4
- Page 4.1
- Page 4.2
And here is my function for automatic page creation (top level only).
if (isset($_GET['activated']) && is_admin()){
add_action('init', 'create_initial_pages');
}
function create_initial_pages() {
$pages = array(
'page1' => 'Page 1',
'page2' => 'Page 2',
'page3' => 'Page 3',
'page4' => 'Page 4'
);
foreach($pages as $key => $value) {
$id = get_page_by_title($value);
$page = array(
'post_type' => 'page',
'post_title' => $value,
'post_name' => $key,
'post_status' => 'publish',
'post_author' => 1,
'post_parent' => ''
);
if (!isset($id)) wp_insert_post($page);
};
}
Does anyone know how to extend this function to also create child pages (if they don't already exist) when the theme is activated?
post_parent
argument that you're passing towp_insert_post
ring a bell? codex.wordpress.org/Function_Reference/wp_insert_post Just keep track of whatpage1...4
ID's are (wp_insert_post
will return the IDs) and then iterate over the children assigning the relevant post parent IDs. Hope this helps.