Created
September 15, 2020 20:19
-
-
Save tlovett1/6dfc7c1b54d3c54e6ac79a1b94c9398d to your computer and use it in GitHub Desktop.
Simple puppeteer script to update all WP posts via a headless browser.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const puppeteer = require('puppeteer'); | |
const util = require('util'); | |
if ( ! process.env.WP_URL || ! process.env.WP_USER || ! process.env.WP_PASS || ! process.env.DB_HOST || ! process.env.DB_USER || ! process.env.DB_PASSWORD || ! process.env.DB_NAME ) { | |
console.error( 'Missing env variables.' ); | |
process.exit(); | |
} | |
const prefix = process.env.DB_PREFIX || 'wp_'; | |
const mysql = require('mysql'); | |
const connection = mysql.createConnection({ | |
host: process.env.DB_HOST, | |
user: process.env.DB_USER, | |
password: process.env.DB_PASSWORD, | |
database: process.env.DB_NAME | |
}); | |
connection.connect(); | |
const screenshot = 'github.png'; | |
(async () => { | |
const query = util.promisify(connection.query).bind(connection); | |
const postIds = []; | |
console.log('Querying posts'); | |
const results = await query('SELECT ID FROM ' + prefix + 'posts WHERE post_status="publish"'); | |
results.forEach(function(result) { | |
postIds.push(result.ID); | |
}); | |
const browser = await puppeteer.launch({ headless: true }); | |
const page = await browser.newPage(); | |
await page.goto(process.env.WP_URL + '/wp-login.php'); | |
await page.evaluate((user, pass) => { | |
document.getElementById('user_login').value = user; | |
document.getElementById('user_pass').value = pass; | |
}, process.env.WP_USER, process.env.WP_PASS); | |
await page.click('#wp-submit'); | |
await page.waitForNavigation(); | |
for (let i = 0; i < postIds.length; i++) { | |
console.log('Updating post ' + postIds[i]); | |
try { | |
await page.goto(process.env.WP_URL + '/wp-admin/post.php?post=' + postIds[i] + '&action=edit'); | |
await page.waitForSelector('.editor-post-publish-button', {visible: true }); | |
await page.evaluate(() => { | |
document.querySelector('.editor-post-publish-button').click(); | |
}); | |
await page.waitForSelector('.components-snackbar__content', {visible: true }); | |
} catch (e) { | |
console.log('Could not update post.'); | |
} | |
} | |
browser.close(); | |
process.exit(); | |
})() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment