Wordpress Themes

A place for my programming projects and the occasional blog about technology related matters.

Javascript format strings

Author einar | 31.07.2007 | Category code, javascript


Python has been my favorite language for a while but since I started making Mozilla Extensions I’ve started to like Javascript a lot too. One thing I miss from Python though are the format strings. In Python you can always create a string like this:

s = '%s is a %s' % ('John', 'Moron')

Since Javascript is a very flexible language and allows you to alter its built in types I decided to try to create something similar for it. Here’s what I came up with:
Read More…

Yet Another Random Quote, with editing

Author einar | 30.07.2007 | Category plugins, wordpress

On my old site I used to have a random quote feature. When I moved to Wordpress I missed it so I found a plugin that displayed random quotes. It was called Yet Another Random Quote (yarq for short) and lives at http://openmonday.org/2006/07/31/yet-another-random-quote/. It’s a good plugin and works well, but it could only add and delete quotes, not edit existing ones. So I changed it a bit, added editing functionality and moved the quote text fields above the quote list, which I thought was better when you had a lot of quotes. After I’d changed it I emailed the author twice to ask him if he wanted to use my changes in his next version but never heard back from him. So I´m gonna distribute my version here:

Download

You can use Options->YARQ to change the display format, and Manage->Quotes to add, edit and delete the quotes. If my changes ever make it to the trunk I’ll stop distributing it here and just link to the main version. If Frank van der Brink ever reads this, get in contact with me at tech [at] einaregilsson.com and I’ll send you the patch for my changes.

Pretty Wordpress Permalinks on IIS

Author einar | 30.07.2007 | Category code, meta, wordpress

I’ve been searching the web a bit for a way to make pretty permalinks work correctly on this site. The site is hosted on IIS so using mod_rewrite won’t work, and it’s on a shared server so the option of installing a mod_rewrite alternative for IIS won’t work either. I could get away with having almost pretty urls, with a index.php in them, like this: http://tech.einaregilsson.com/index.php/2007/07/30/pretty-wordpress-permalinks-on-iis/ but I didn’t like it.

The Using Permalinks section on the Wordpress page has a lot of info on this and it links to one solution that uses custom 404 pages to make this work but unfortunately I don’t think it’s a very good solution at all. What it does is parse the url from the 404 string, then re-implement all the rewrite url matching itself, make its own http request to the correct url, then write the data from that request into the response. It’s a good effort but it’s duplicating functionality already in Wordpress and making a new http request for every page hit which I don’t like. After searching around some more I found another 404 page solution that is very simple and elegant. All you have to do is create a 404 page and put the following 4 lines in it:

<?php
$qs = $_SERVER['QUERY_STRING'];
$_SERVER['REQUEST_URI'] = substr($qs, strpos($qs, ':80')+3);
$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
include('index.php');
?>

All this does is fix the REQUEST_URI and PATH_INFO variables and then include index.php, so Wordpress will do the rest. It’s simple, it doesn’t duplicate functionality already in Wordpress and it doesn’t have the overhead of another http request for every page hit. The installation steps are:

  1. Create the file wp-404-handler.php in your base Wordpress folder. (you can also download it here).
  2. Set your sites 404 page to point to the wp-404-handler.php url. Most control panels at web hosts allow you to do this. If you’ve got the option to select between FILE and URL then choose URL.
  3. Go to Options -> Permalinks in your Wordpress admin page, and choose an appropriate structure for your links. I chose Custom with this pattern:
    /%year%/%monthnum%/%day%/%postname%/ 
  4. Enjoy!

Icelandic letters in Wordpress permalinks

Author einar | 27.07.2007 | Category code, wordpress

I use Wordpress for this site as well as my personal blog. It works very well with icelandic letters for the most part but there was one problem. When you create a new post and give it a title, the post slug is generated from the title. For example, the title of this post is ‘Icelandic letters in Wordpress permalinks’ and it’s automatically changed to ‘icelandic-letters-in-wordpress-permalinks’ in the url. When you have a post with special characters in the title they are either removed or changed to some ASCII equivalent. For instance, Á becomes A, Í becomes I, ö becomes o and so on. This worked well for all icelandic letters except three, they are þ, æ, ð. When I made a post with the title ‘Þátturinn’ the post-slug would become ‘þatturinn’ and when I tried to enter that address in my address bar it changed to ‘%c3%beatturinn’ and I got a ‘page not found’ error from Wordpress.

Now, you can manually enter the post-slug when you write a post, but I don’t wanna have to do that every time I post, so I dug around the Wordpress code and found the replacement function. It’s called remove_accents and is in the file wp-includes/formatting.php. There, right before the line ‘// Decompositions for Latin Extended-A’ I added the following code:


    chr(195).chr(144) => 'D', chr(195).chr(176) => 'd',
    chr(195).chr(158) => 'TH',chr(195).chr(190) => 'th',
    chr(195).chr(134) => 'AE',chr(195).chr(166) => 'ae',

Now the characters are replaced automatically like this: Ð => D, ð => d, Þ => TH, þ => th, Æ => AE, æ => ae. I don’t know if everyone has this problem, or if it just has to do with the character set settings on my webhost but this works great for me. No more manually fixing page slugs! I’m gonna create a bug report with Wordpress and hopefully this will be accepted into the next version.

Few words in icelandic to help people find this post :) : Íslenskir stafir í wordpress linkum post slug permalink permalinks

Update 02.08.2007: Just found out that there’s already a plugin that does the same thing, and it doesn’t require you to mess with your Wordpress files. You can get it at http://wordpress.is/saekja/ibaetur/iceslugs.tar .

Update 13.08.2007: I made a patch for this and submitted it to Wordpress. The changes should come in WP 2.3. The patch is on ticket #4739 .

First post

Author einar | 26.07.2007 | Category meta

Welcome to tech.einaregilsson.com :) . I’m setting up this site mostly to keep track of my various small programming projects. I have quite a few Mozilla extensions, some Greasemonkey scripts, Wordpress plugins and one or two .NET projects scattered around the web, so I thought it would be good to gather them all in one place. Many of them are still hosted elsewhere but there will at least be a link to all of them here. I haven’t finished putting everything on the projects page yet but it’ll be there soon.

I might also write the occasional blog post, however I have my personal blog (in icelandic) over at einaregilsson.com so this place will only be for tech related stuff. I have a few technical things I´ve been wanting to write about but wouldn’t be of interest to the readers of my personal blog so I´ll post them here when I have the time.