Recent blog posts
I'm studying the wp.media library, and Backbone.js. I never really did anything with except toy programs with Backbone - and I didn't really grok it, so now I can learn it... post Angular and post-React. It's going backwards in time, but, still instructive because the Backbone.js idioms are different from the easier-to-use frameworks.
I'm still working on reading through the WP media code, but found several references that have helped.
(It seems like I got the AJAX server working, at least somewhat. So I needed to implement the editors. This is really difficult because it's all in the wp.media hierarchy, and with keywords like "wp" and "media", it's hard to find the documentation. I have been digging around in the code trying to understand it, and came up with notes, which I'll post occasionally. These are mainly for myself, to review when I need to restart the exploration, but they're posted because someone else might find this useful.)
These are incomplete, and probably incorrect notes.
This is a two-part howto about encrypting data for Thunderbird. The first part is about Enigmail, a way to encrypt your email messages. The second is about encrypting your entire email storage on your computer.
get_shortcode_regex() (GSR() from now on) is used to parse shortcodes from a post's text.
I was writing a filter to take the post text, parse the shortcodes, and modify them by adding an "id" parameter.
After I spent some time writing a regex to parse the shortcodes, I discovered GSR(). GSR() was better and more complete.
Now I just had to learn to use it - and there weren't any docs.
Let's Review How to Use Shortcodes
You've basically got five ways to use shortcodes:
Since the comments were closed, I'm noting here, that Python figured this out a while back.
Function parameters start with required positional parameters, followed by optional positional parameters, followed by named parameters.
In JS this would be:
I'm learning a lot from this excursion into Kindle publishing.
Technical books are higher-value products, so that's good. They don't have a big audience, which is bad.
Cookbooks are lower-value products, but take little time to write, and have a much larger audience.
On a lark, I got a marketing ebook and was told to write catchy headlines. Then I got another ebook about writing headlines. So, I'm going to be changing all the headlines on this site, save a few, just to see if it boosts the traffic coming into the site.
A lot of other books out there don't discuss selector specificity and the Cascade in enough detail. They don't talk about ways to organize your code, either. When you read this ebook, it'll make sense.
This script renames a directory full of XCF files so that the filename is derived from the first line of a layer named "caption".
I wrote this to enhance the file names for Koya Hand Crafts.
Originally from: 2007-09-26 15:17:44 -0700
This is a bit of code to add a floating box to your page that will let you switch stylesheets and fonts. I wrote it specifically to start trying out different "themes" and fonts, not to allow the end user to do these things. But the client will be using it to preview.
It's not fully parameterized, nor does it generate the HTML for the selects, so you'll need to hack the code.
Some of the notes here are really old, and use old practices. This is a rundown of contemporary practices circa 2016. I'm a few years behind, so, it's more like 2013 practices, but, there are still tutorials being written that don't use these better techniques. Get with the times.
Don't set up Apache. Instead use "php -S localhost:8000" to start a local server from the shell. The docroot will be in the current directory, and error logs go to the screen.
It took forever, but I finally hunkered down and learned some Python-Fu. It's really nice, especially being able to use Python's libraries, but, like programming Gimp in Scheme, it was kind of hard.
The most important thing, which I learned only after working at it three hours, is to use the "Browser..." tool in the Python console (in Gimp). This helps you find predefined commands to do all the expected operations. Use the "Apply" button to paste an example into the console.