This is a PHP Class which enables you to create/manage/update Wordpress posts and pages.
This require Wordpress 2.9+ to run.
Include theclass.postcontroller.php
file in your Wordpress plugin/theme.
You now have access to the class and its functions. Instantiate the class.
$Poster = new PostController;
This class has two major functions; Creating and Updating posts. We'll start with creating.
See index.php
for working examples.
The minimum requisite for creating a post is having the title set. You can do this by using the following code;
$Poster->set_title( "New Post" );
After this has been set, simply run the create method.
$Poster->create();
Note: The method will check if there is another post with the same name (just to ensure that it isn't making duplicates). Hence a unique title is required.
There are many other attributes you can set. To do this, you simply run their respective method before calling the create method.
Before we can update a post, we need to find it. To do this, we use the search method.
$Poster->search( ' SEARCH_BY ' , ' DATA ' );
This method accepts 2 parameters, the attribute to search by and the data to search for.
You can search by title;
$Poster->search( 'title' , ' DATA ' );
You can search by ID;
$Poster->search( 'id' , ' DATA ' );
And you can search by slug;
$Poster->search( 'slug' , ' DATA ' );
The data parameter will accept either a string (if searching by title or slug) or an integer (if searching by title).
If a post or page cannot be found with the specified parameters, an error will be added to the $erros
array. You can call and display this with the following code.
$error = $Poster->get_var(errors); $Poster->PrettyPrint($error);
Once a post has been found, you can assign it new attributes.
Once the attributes have been set, simply call the update method.
$Poster->update();
For example, if you wish to change the title of post 1 (ID = 1), you would use the following code.
$Poster->search( 'id' , 1 ); $Poster->set_title( "New Title" ); $Poster->update();
All the attributes can be updated this way.
We have already seen this method. It sets the post's title. No HTML is allowed here, and is stripped out.
$Poster->set_title( "New Post" );
This method sets the post type of the page. Input the slug of the post type, eg. 'post'
and 'page'
. Custom post types are supported.
$Poster->set_type( "page" );
This method sets the post's content. HTML is allowed.
$Poster->set_content( "<h1>This is my awesome new post!</h1>" );
This sets the post's author. Simply specify the author ID of the new author. This must be an integer.
$Poster->set_author_id( 12 );
This is the custom url path of the post (if enabled). Take care with this, as if the slug is already in use, it may cause some errors. I have included validation to try and avoid this at all costs though. No special characters or html allowed.
$Poster->set_post_slug( "new_slug" );
This is an integer or array of integers. This function is non destructive, meaning it will preserve any categories already set (see 'Multiple Function Example'). The integers correspond to Category ID's, which will be unique to each Wordpress site. NB Category with ID 1 is created automatically and can't be deleted.
$Poster->add_category( array( 1 , 2 ) ); // Adds post to both categories 1 and 2. $Poster->add_category( 1 ); // Adds post to category 1. // Multiple Function Example $Poster->add_category( 1 ); $Poster->add_category( 2 ); // This adds the post to both category 1 and 2.
This method alows you to set your page's template (must be a page). If applied to a different post type it will be ignored, and an error will be added to the errors array. The format of the input will be 'php_template_name.php'
and will be unique to each theme.
$Poster->set_page_template( "fullwidth_page.php" );
This method sets the post's state.
Available options; [ 'draft' | 'publish' | 'pending'| 'future' | 'private' | custom registered status ]
$Poster->set_post_state( "pending" );
To retrieve defined variables you can use the get_vars method.
$Poster->get_var('title'); // Returns the title (if you have set it) $Poster->get_var('type'); // Returns the post type (if you have set it) $Poster->get_var('content'); // Returns the content (if you have set it) $Poster->get_var('category'); // Returns the category as an array (if you have set it) $Poster->get_var('template'); // Returns the template (if you have set it) $Poster->get_var('slug'); // Returns the slug (if you have set it) $Poster->get_var('auth_id'); // Returns the author id (if you have set it) $Poster->get_var('status'); // Returns the post's status (if you have set it)// AFTER YOU HAVE EITHER CREATED A POST OR SUCCESFULLY SEARCHED FOR ONE YOU CAN USE THESE
$Poster->get_var('current_post'); // Returns the a PHP Object of the post. This can be used to check if the search method was successful $Poster->get_var('current_post_id'); // Returns the selected post's ID (integer). $Poster->get_var('current_post_permalink'); // Returns the URL permalink of the selected post