I think this is really going to be my last post of the year! I promise!!!
I recently discovered that, for some reason, there does not appear to be a built-in way to set the Enable SSL checkbox on multiple posts in WordPress.
While there may not be an app for that – there is now a script for that!
Run this against your MySQL WordPress database:
INSERT INTO `wp_postmeta` (post_id, meta_key, meta_value)
SELECT DISTINCT post_parent, 'itsec_enable_ssl', 1
FROM `wp_posts`
WHERE post_parent NOT IN (
SELECT DISTINCT post_id
FROM `wp_postmeta`
WHERE meta_key = 'itsec_enable_ssl' and meta_value = 1)
AND post_parent <> 0;
You may need to change the “wp_” prefix on the table names if you have changed those for security purposes. This works with the current version of WordPress, version 4.9.1.
You can run the script multiple times to no ill effect. Just make sure you have SSL set up properly before using this.
Though I wouldn’t call this an intractable problem, I did notice something annoying when looking at my Code School profile on the sidebar of this site.
Between the badges in the “Master Status” section, white dots had appeared! Upon inspecting these, I saw that these were the bullets on the list items that held the badges.
One article on Stack Overflow suggested that the CSS style for the tag for the unordered list that holds the list items should be include “list-style-type: none;”, but that seemed to have no effect.
After playing with the CSS a bit, I discovered that setting that property on the li tag instead fixed the problem.
Here is the corrected CSS code which updates the code from a past post:
I was looking at the cached pages on the Wayback Machine and decided to find out if that site had an API. (It does.) I wanted to find a way to use this API to submit links to the Wayback Machine database. As it turns out, a Ruby gem called WaybackArchiver has already been written for just this purpose!
Now that I had an easy way to submit multiple URLs, I got to thinking about how this could be more easily automated. What if I had a sitemap that contained all of the links I wanted to submit? What if there is already a gem to parse a sitemaps.org-compliant sitemap, such as the one on WordPress sites that use the Google Sitemap Generator Plugin?
Even though all of these things exist, I have not found where they have been combined, so I did just that. The Ruby script I wrote requires several gems: 1. WaybackArchiver, for submitting links, sitemaps, or pages to the Wayback Machine 2. Sitemap-Parser, for parsing sitemaps 3. OpenURI, for opening websites 4. Nokogiri, for parsing XML (also HTML, SAX, and Reader) files
If these gems are not installed already, you can install them at the Ruby prompt with “gem install” and the name of each gem.
The script, which I named map.rb, is below.
require 'wayback_archiver'
require 'sitemap-parser'
require 'open-uri'
require 'nokogiri'
mainSitemapURL = ARGV[0]
if not mainSitemapURL.nil?
puts 'Running...' #+ mainSitemapURL
#mainSitemap = SitemapParser.new mainSitemapURL
mainSitemap = Nokogiri::HTML(open(mainSitemapURL))
#puts mainSitemap
mainSitemap.xpath("//sitemap/loc").each do |node|
#puts node.content
subSitemapURL = node.content
subSitemap = SitemapParser.new subSitemapURL
arraySubSitemap = subSitemap.to_a
(0..arraySubSitemap.length-1).each do |j|
#puts arraySubSitemap[j]
WaybackArchiver.archive(arraySubSitemap[j], :url)
end
end
end
puts 'Finished.'
This script works unaltered with WordPress sitemaps created by the plugin mentioned above. These sitemaps actually produce a sitemap index, with individual sitemaps being linked here – so each of the linked sitemaps are also parsed. The above script can be run at the Ruby prompt with “ruby map.rb URL“, substituting the URL for the sitemap.
Should your sitemap be organized differently, this code may not work as-is, but may require changes depending on the node tag names.