Though WordPress has wp-cron functionality to do scheduled tasks, I still like Unix crontab to do them. Fortunately, we can write script programs in PHP to run from a command line even if the scripts call WordPress functions. To do WordPress operation in a script, we have to include ‘wp-load.php’ before the operation.
Below is a sample script to create a new post. You can run it from a command line. Before loading ‘wp-load.php’, you have to set PHP ‘$_SERVER’ variable. Especially in a multisite environment, WordPress will determine which site to involve by $_SERVER values.
#!/usr/bin/php
<?php
// define('WP_DEBUG', true); /* uncomment for debug */
$_SERVER = array(
"HTTP_HOST" => "en.hetarena.com",
"SERVER_NAME" => "en.hetarena.com",
"REQUEST_URI" => "/",
"REQUEST_METHOD" => "GET"
);
// you may have to change directory path
require_once('/usr/share/wordpress/wp-load.php');
$post = array (
'post_content' =>
"<p>Hello, World!</p>",
'post_type' => 'post',
'comment_status' => 'closed',
'ping_status' => 'closed',
'post_status' => 'publish',
'post_author' => 2,
'post_title' => 'My post',
'post_category' => array(1)
);
$e = wp_insert_post($post, true);
if (is_wp_error($e)) {
print $e->get_error_message();
}
else {
print "Post ID = " . $e . "\n";
}
I’ve learned this method from this site, but I have to remove protocol strings from $_SERVER to make it work.
Hetarena.com