Inserting posts
Do you remember back in 2008, when I created WP Vote? This site was the first (as far as I know) social voting site created 100% within WordPress. Users were able to submit a story, which was automatically published on the blog.
Inserting a post programmatically in WordPress is extremely easy. You have to use the wp_insert_post() function, which takes an array as a parameter.
Here is a working example. If you want to test it, paste the code below on your functions.php file.
global $user_ID; $new_post = array( 'post_title' => 'My New Post', 'post_content' => 'Lorem ipsum dolor sit amet...', 'post_status' => 'publish', 'post_date' => date('Y-m-d H:i:s'), 'post_author' => $user_ID, 'post_type' => 'post', 'post_category' => array(0) ); $post_id = wp_insert_post($new_post);
Cool, isn’t it? Let have a closer look to the parameters specified in the $new_post array:
- post_title: the name of the post.
- post_content: the content of the post
- post_status: the post status (published, draft, etc)
- post_date: use date() or specify a custom date
- post_author: Author id of the post author
- post_type: Can be post, page, or a custom post type
- post_category An array of categories ids
Source: http://www.webmaster-source.com/2010/02/09/programmatically-creating-posts-in-wordpress
Inserting comments
Inserting comments is not harder than inserting posts. I personally never used this code, but here is it in case you need it. To give it a try, simply paste it in your functions.php file.
$data = array( 'comment_post_ID' => 1, 'comment_author' => 'admin', 'comment_author_email' => '[email protected]', 'comment_author_url' => 'http://www.catswhocode.com', 'comment_content' => 'Lorem ipsum dolor sit amet...', 'comment_author_IP' => '127.0.0.1', 'comment_agent' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; fr; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3', 'comment_date' => date('Y-m-d H:i:s'), 'comment_date_gmt' => date('Y-m-d H:i:s'), 'comment_approved' => 1, ); $comment_id = wp_insert_comment($data);
Just like the wp_insert_post() function, wp_insert_comment() takes an array as a parameter. Here are the data used:
- comment_post_ID: ID of the commented post
- comment_author: Name of the comment author
- comment_author_email: Email address of the comment author
- comment_author_url: Website of the comment author
- comment_content: Text of the comment
- comment_author_IP: IP address of the comment author
- comment_agent: User agent of the commenter browser
- comment_date: Date of the comment
- comment_date_gmt: GMT date of the comment
- comment_approved: Is the comment approved? 1 for yes and 0 for “awaiting moderation”
Adding categories to a post
Now that we saw how to insert a post or a comment into WordPress database, let’s see how to make a post part of one (or more) categories. WordPress has a built-in function for that, named wp_set_object_terms().
What you have to do is to create an array with the desired categories ID, and then use the function as shown below:
$category_ids = array(4, 5, 6); wp_set_object_terms( $post_id, $category_ids, 'category');
The wp_set_object_terms() function take 3 parameters: The post ID, an array of categories ID, and the taxonomy type (In this example, category).
Adding tags to a post
Adding tags to a post is extremely simple as well. Even better, it does not require a new function, you can do so by using wp_set_object_terms().
Take a look at the example below:
$tag_ids = array(7, 8, 9); wp_set_object_terms( $post_id, $tag_ids, 'post_tag');
Looks very similar with the previous piece of code, which allowed us to add categories to a post, isn’t it? In fact, the only difference is the taxonomy type: Here the parameter is post_tag instead of category.
Source: http://wpprogrammer.com/snippets/add-a-category-or-tag-to-a-post-programatically/
Automatically create a custom field when a post is published
I recently had a client who wanted to have a custom field created automatically, each time he published a new post, so he wouldn’t have to create a custom field with a default value for each article he wrote.
This piece of code was a real life-saver: Just paste it on your functions.php file and publish a new post: A custom field has been created automatically.
function add_custom_field_automatically($post_ID) { global $wpdb; if(!wp_is_post_revision($post_ID)) { add_post_meta($post_ID, 'field-name', 'custom value', true); } } add_action('publish_page', 'add_custom_field_automatically'); add_action('publish_post', 'add_custom_field_automatically');
So how does it work? First, a function has been created. This function make sure the post isn’t a revision on then adds a custom field named field-name, with custom value as a value.
Then, a “hook” is used to make sure that every time a post or page will be published, the add_custom_field_automatically() function will be called.
Source: http://wpcanyon.com/tipsandtricks/adding-a-custom-field-automatically-on-postpage-publish/
Like CatsWhoCode? If yes, don’t hesitate to check my other blog CatsWhoBlog: It’s all about blogging!