Inserting A Post Using The WordPress Rest API With Basic Authentication – Lightsail Bitnami Stack
Very quick post here mainly so I don’t forget myself.
I am using postman and I want to insert a post into my website using the Wp REST API.
First things first install this plugin in the plugins directory.
https://github.com/WP-API/Basic-Auth
Bitnami stacks seem to work a bit differently to say your local host setup you actually edit most of the .htaccess functionality via the config file.
I have a WordPress stack setup in /apps/wordpress you can access your conf files in.
~/apps/wordpress/conf
In this folder you want to edit the file httpd-app.conf
sudo vim httpd-app.conf
The right above the other RewriteEngine rules add this.
RewriteEngine on RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
Make sure you restart Apache.
sudo /opt/bitnami/ctlscript.sh restart apache
Now you can use postman to insert your new post.
https://example.com/wp-json/wp/v2/posts/
I am also doing this in a AWS Lambda function like this using the https module.
var wp_data = querystring.stringify({ title: 'Title', content: 'Hello', post_status: 'publish' }); var auth = 'Basic ' + Buffer.from('user:password').toString('base64'); var req = https.request({ hostname: 'example.com', port: 443, path: '/wp-json/wp/v2/posts', method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': wp_data.length, 'Authorization': auth } }, function(res) { res.setEncoding('utf8'); res.on('data', function(response) { var resp = JSON.parse(response); console.log(resp); }); }); req.on('error', function(err) { console.log(JSON.stringify(err)); }); req.write(wp_data); req.end();