views:

472

answers:

2

How to automatically create wordpress page (for example when plugin is activated)?

+4  A: 

Use wp_insert_post(), which can insert pages as well: http://codex.wordpress.org/Function_Reference/wp_insert_post

See post_type below.

$post = array(
  'ID' => [ <post id> ] //Are you updating an existing post?
  'menu_order' => [ <order> ] //If new post is a page, sets the order should it appear in the tabs.
  'page_template' => [ <template file> ] //Sets the template for the page.
  'comment_status' => [ 'closed' | 'open' ] // 'closed' means no comments.
  'ping_status' => [ ? ] //Ping status?
  'pinged' => [ ? ] //?
  'post_author' => [ <user ID> ] //The user ID number of the author.
  'post_category' => [ array(<category id>, <...>) ] //Add some categories.
  'post_content' => [ <the text of the post> ] //The full text of the post.
  'post_date' => [ Y-m-d H:i:s ] //The time post was made.
  'post_date_gmt' => [ Y-m-d H:i:s ] //The time post was made, in GMT.
  'post_excerpt' => [ <an excerpt> ] //For all your post excerpt needs.
  'post_name' => [ <the name> ] // The name (slug) for your post
  'post_parent' => [ <post ID> ] //Sets the parent of the new post.
  'post_password' => [ ? ] //password for post?
  'post_status' => [ 'draft' | 'publish' | 'pending' ] //Set the status of the new post.
  'post_title' => [ <the title> ] //The title of your post.
  'post_type' => [ 'post' | 'page' ] //Sometimes you want to post a page.
  'tags_input' => [ '<tag>, <tag>, <...>' ] //For tags.
  'to_ping' => [ ? ] //?
);  

// Insert the post into the database
wp_insert_post( $post );
Artem Russakovskii
Because Pages are simply Posts that are flagged as Pages.
Chacha102
Thanks. Easier that I thought :)
Phil
Also, newbie plugin dev question... will this make page when i activate plugin or i need to add some code to specify that i want plugin to make that page at the moment it's activated?
Phil
That's up to you. When you make the plugin, there's space for you to do things when the plugin is activated as well as a multitude of hooks and actions you can hook into and do things only when a certain event occurs. Read up on WP plugin development online.
Artem Russakovskii
A: 

Wordpress provides the wp->query API method for database abstraction. You can create the appropriate query to make a Page when needed.

Luca Matteis
That's a pretty bad suggestion in general. You should use query only if you can't achieve the same with an API function. The main reason being future table changes may break your query while functions are hopefully upkept.
Artem Russakovskii