Skip to content

Instantly share code, notes, and snippets.

@maheshwaghmare
Last active September 11, 2018 10:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maheshwaghmare/84849ebf0c90806b0809b3a5dc15b1c0 to your computer and use it in GitHub Desktop.
Save maheshwaghmare/84849ebf0c90806b0809b3a5dc15b1c0 to your computer and use it in GitHub Desktop.
Create the post on wordpress.com site using oAuth and Rest API. I have created the posts on https://maheshwaghmare.wordpress.com/?p=4034 using below code.
<?php
/**
* Create a post on your site WordPress.com using Rest API (oAuth).
* I have created the posts on https://maheshwaghmare.wordpress.com/ using below code.
*
* > How it works?
* Using below two fucntion `get_access_key()` and `create_post()` create the post on https://wordpress.com/
*
* Function `get_access_key()` get the `access_key` by passing authentication details.
* Function `create_post()` create a post by passing `access_key` and `post arguments`.
*/
// Step: 1 Add authentication details to get auth key.
$auth_args = array(
'username' => '',
'password' => '',
'client_id' => '',
'client_secret' => '',
'grant_type' => 'password', // Keep this as it is.
);
$access_key = get_access_key( $auth_args );
// Step: 2 Set post arguments and pass it create the post.
$post_args = array(
'title' => 'Hello APAI World',
'content' => 'Hello. I am a test post. I was created by the API',
'tags' => 'tests',
'post_status' => 'draft',
'categories' => 'API',
);
// Create a post with the access key.
create_post( $access_key, $post_args );
/**
* Create post with access key.
*
* @param string $access_key Access key.
* @param array $post_args Post arguments.
* @return mixed Post response.
*/
function create_post( $access_key, $post_args )
{
$options = array (
'http' => array(
'ignore_errors' => true,
'method' => 'POST',
'header' => array(
0 => 'authorization: Bearer ' . $access_key,
1 => 'Content-Type: application/x-www-form-urlencoded',
),
'content' => http_build_query( $post_args ),
),
);
$context = stream_context_create( $options );
$response = file_get_contents(
'https://public-api.wordpress.com/rest/v1/sites/YOURSITEID/posts/new/',
false,
$context
);
return json_decode( $response );
}
/**
* Get Access Key.
*
* @param array $args Auth arguments.
* @return mixed Auth response.
*/
function get_access_key( $args ) {
// Access Token.
$curl = curl_init( 'https://public-api.wordpress.com/oauth2/token' );
curl_setopt( $curl, CURLOPT_POST, true );
curl_setopt( $curl, CURLOPT_POSTFIELDS, $args );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1);
$auth = curl_exec( $curl );
$auth = json_decode($auth);
// Access Key.
return $auth->access_token;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment