Hey there, fellow developer! Ready to dive into the world of WordPress.com API integration? You're in the right place. We'll be using the nifty wpcom.js package to make our lives easier. Buckle up, and let's get started!
First things first, let's get our project set up:
npm install wpcom
Now, head over to the WordPress.com Developer Portal and create a new application. Jot down your client ID and client secret – you'll need these soon!
Time to get our hands dirty with OAuth2. Grab those credentials you just noted down and let's implement the authentication flow:
const wpcom = require('wpcom'); const oauth = wpcom.oauth({ client_id: 'YOUR_CLIENT_ID', client_secret: 'YOUR_CLIENT_SECRET', redirect_uri: 'YOUR_REDIRECT_URI' }); // Generate the authorization URL const authUrl = oauth.urlToConnect(); console.log('Authorize here:', authUrl); // After user authorizes, exchange the code for a token oauth.code.getToken(authorizationCode, (err, token) => { if (err) { console.error('Oops!', err); return; } console.log('Token acquired!', token); });
Now that we're authenticated, let's do some cool stuff:
const wp = wpcom(token); // Fetch site info wp.site('yoursitename.wordpress.com').get((err, site) => { console.log('Site info:', site); }); // Retrieve posts wp.site('yoursitename.wordpress.com').postsList({ number: 10 }, (err, posts) => { console.log('Recent posts:', posts); });
Creating, updating, and deleting posts is a breeze:
// Create a new post wp.site('yoursitename.wordpress.com').addPost({ title: 'Hello, API!', content: 'This post was created via the API. Cool, huh?' }, (err, post) => { console.log('New post:', post); }); // Update a post wp.site('yoursitename.wordpress.com').post(postId).update({ title: 'Updated Title' }, (err, updatedPost) => { console.log('Updated post:', updatedPost); }); // Delete a post wp.site('yoursitename.wordpress.com').post(postId).delete((err) => { console.log('Post deleted!'); });
Let's interact with those comments:
// Fetch comments wp.site('yoursitename.wordpress.com').commentsList({ number: 20 }, (err, comments) => { console.log('Recent comments:', comments); }); // Add a new comment wp.site('yoursitename.wordpress.com').post(postId).comment().add({ content: 'Great post!' }, (err, comment) => { console.log('New comment:', comment); }); // Moderate a comment wp.site('yoursitename.wordpress.com').comment(commentId).update({ status: 'approved' }, (err, updatedComment) => { console.log('Comment moderated:', updatedComment); });
Time to spice things up with some media:
const fs = require('fs'); // Upload media wp.site('yoursitename.wordpress.com').media().add({ files: fs.createReadStream('awesome-image.jpg') }, (err, media) => { console.log('Uploaded media:', media); }); // Attach media to a post wp.site('yoursitename.wordpress.com').post(postId).update({ featured_image: mediaId }, (err, updatedPost) => { console.log('Media attached to post:', updatedPost); });
Here are some pro tips to level up your API game:
Use pagination for large datasets:
wp.site('yoursitename.wordpress.com').postsList({ number: 20, page: 2 }, callback);
Handle errors like a champ:
if (err) { console.error('API Error:', err.message); // Implement retry logic or graceful degradation }
Set up webhooks for real-time updates (check the WordPress.com developer docs for this one).
And there you have it! You're now equipped to build awesome WordPress.com integrations using wpcom.js. Remember, the WordPress.com API is vast, so don't be afraid to explore and experiment. Happy coding!
For more in-depth info, check out the wpcom.js documentation and the WordPress.com API docs.
Now go forth and create something amazing! 🚀