So here’s my little foray into WordPress themes. From here you can download any themes I’ve produced, or read a guide to creating your own.

Guides to creating your own themes

If you want to try customizing your own theme, then have a look at my WordPress Theme Dissection – a set of guides dissecting a WordPress theme and hopefully demonstrating how to begin customizing your own.

You may also find it useful to read another guide I wrote on installing WordPress on a local computer. It makes the whole theme customization process a lot faster and easier, and protects you from accidentally messing-up your live website.


Guangzhou is a two-column fixed width theme for both WordPress and bbPress. It is highly configurable, with two widget areas (sidebar and bottom), as well as customisable skins and many other options.


Theme image

Giraffe2 – WordPress 2.0 only version of the Giraffe theme. Has everything that Giraffe 1.23 contains, with the addition of configurable columns, WordPress Widget support, live preview options, customizable colour schemes, and a logo manager.


Theme image

Giraffe – Fully customizable and localized fluid or fixed width theme. Posts are split into lead, recent, and older posts. Has a working print CSS, along with pre-defined colour schemes, and is configured via an administration interface.

193 thoughts on “Themes”

  1. You have to install the gravatar plugin also. It took me quite some time to figure out why the pages with comments were broken. With the plugin installed everything works fine.

  2. Thanks Johannes – I thought I’d nailed all the dependancies, but you caught one I missed. I’ve updated the theme to version 1.1, and it now detects whether the Gravatar plugin is installed. If it is then it displays the image, otherwise it remains silent and you just get the text.

    The changes to the theme are only in comments.php, and in the support plugin.

  3. I just got you theme, and i saw that the text strings are localized through the use of “strange” functions ( _g() _ge() ) why? Second it looks it miss the load_theme_textdomain(‘theme-name-domain’) as stated in the Ryan post at:

    the same call for plugin is missed too.

    This way the them and the plugin will try to use to .mo files of wordpress instead than it’s own.

    If you need help about internazionalization i’m here 🙂 s soon as you will have all set up correctly ill run to make the italian version of theme and plugin as i’m doing for other themes and plugins.

    Great works as usual… and nice the idea of custom setup of the theme through a plugin 🙂

  4. Hi Stefano,

    Yes, I made my own localization functions – I was tired of typing _e('something','giraffe') all the time. The new functions just call the normal WordPress functions, but pass the 'giraffe' parameter.

    Also, the load_theme_textdomain is in the plugin, not the theme. Again, this is to separate as much PHP from the theme as possible. As the theme doesn’t function without the plugin then localisation works across both.

    Anyway, the latest theme now has the .po file. If you could translate it into Italian that would be wonderful!

  5. When I try to administer the theme, I get the following error:

    Fatal error: Call to undefined function: mysql_real_escape_string() in /var/www/html_stabile/blog/wp-content/plugins/giraffe/giraffe.php on line 185

    Where should I look for the mysql_real_escape_string() function to make sure things are ok on my site?

    I’m beginning to think there is something messed up with my installation of MySQL, but if you’ve encountered this problem before, perhaps you have a better idea.

    I really do like the theme — it seems very flexible. I just wish I had the time and wherewithal to make it work on my set-up.

    Oh well. Thanks for creating this theme, and thanks in advance for your guidance. 🙂

    – Rick S.

  6. I figured it out. It turns out that mysql_real_escape_string() was introduced to PHP with version 4.3. I have version 4.2.2 running on my server.

    Oy. Now I have to upgrade, and who knows when I’ll get around to that . . .

    Again, I really like the flexibility of the Giraffe theme, so I am planning on the painful PHP upgrade process.

    Thanks again.

    – Rick S.

  7. Thanks Rick. I’ve updated the theme to use mysql_real_escape_string in newer versions of PHP, and the old mysql_escape_string in older versions. Hopefully this should do the trick for you without requiring a PHP upgrade (although that might still be worthwhile!)

  8. John, you got me on the right track. I downloaded the updated version of Giraffe (you really didn’t have to do that . . .) and tried it, but still had problems because of my PHP version.

    I figured, what the heck, editing the code might just be easier than upgrading to PHP 5. Here is the edit I did at around line 230 of the giraffe.php plugin because file_get_contents() was also introduced in version 4.3:

    // Refresh the theme
    if (($style_array = file (dirname (__FILE__).’/style.css’)) !== false)

    foreach ($style_array as $style_array_num => $style_array_element) {
    . . .

    This is probably not the best way to do this (I’m not checking for the PHP version, for example), but it’s working for me so far.

    I should really do the PHP upgrade . . .

    Thanks again for the theme and the help. 🙂

  9. I’m sure that other people have an older version of PHP, so I should try and make it backwards compatible. I’ve updated the theme again to add an alternative for file_get_contents, so it should work on old or new PHPs.

    Thanks for the tip!

  10. Hmmm. I love the Girafe theme, and made a few slight modifications to fit my needs, but I’ve discovered that this AND my modified theme does not render well in Safari. (or at least the OS X machine I happened to be on today) Has anyone else noticed this?

  11. Do you know which part doesnt work very well? I made some changes that make it render better on Microsoft systems, but I cannot check how it looks on a Mac at all (here’s hoping for a quick swap to Intel for OS X!)

  12. John

    It appears that the sidebar in the comments drops all the way down to the bottom of the page in Safari (MAC), although I am noticing that it doesn’t do it on this site. Maybe I tweaked something that wasn’t supposed to be tweaked?

  13. how do i remove the top menu links that appear at the top of the page from the sidebar while keeping the blogroll?

  14. actually nevermind my last post i just thought of a simple work around. This is a great theme by the way. but i found that i dont have a left margin in explorer, but its fine in firefox.

  15. Hi, John
    I think Giraffe theme is a very original theme for WordPress. I like it very much.
    I have downloaded the Giraffe theme and plugin. Then, I’ve tried to personalize the front end of your theme, making changes to the style and translating it into Baskish. Everything seems to be OK.
    But there’re problems using the plugin. If a make a change through the plugin (insert the logo, change the fonts, change the layout…) all changes made in style.css, single.php and index.php disappear and everything returns to the standard configuration. Am I doing something wrong?. Can I use the Giraffe plugin avoiding those annoying changes?
    Thank you

  16. That’s just how the plugin works – the changes need to update the files you mentioned. If you want to make additional changes then perform all configurations from the plugin first, and then make your changes at the end (maybe even disabling the plugin to prevent you accidently overwriting your changes).

  17. Hello, I am getting an error when try to load the plugin:

    Fatal error: Call to undefined function: load_theme_textdomain() in /home/admin/public_html/wp-content/plugins/giraffe/giraffe.php on line 11

    What do I need to do to correct this?

  18. 2 REALLY dumb ?s
    the “fluid” width is lost when viewing posts and
    how do I change the color of the theme…I changed it in giraffe.php, but stayed blue

  19. Hi Danu, I’m not sure what you mean about the loss of fluid width – it works fine here! The colour of the theme can be changed by installing the Giraffe plugin and using the administration page. You shouldn’t need to change anything in giraffe.php at all

  20. i just like to say thank you for this really great piece of work! taking a look into the code makes it easier to understand how the localize-function ought to be used. (tho it needs a bit more staring on my side till i understand it completely… ; ) really great to have this as a reference. with just the article from (linked above) i’d be lost… again: great work, keep it up!
    ok, now here’s a german translation to give something back to you: German / Deutsch
    the Plugin-page is untouched
    (Wer die Formulierungen für zu formell hält muss nur die ebenfalls im zip enthaltene po-Datei anpassen und neu speichern)

  21. Question relating to pages. I have created a sub page (from health). How do I get to see the link within the health page. I had the impression that WordPress automatically added sub page links to the navigation bar of the parent page.

  22. No, only the top level pages are displayed. This is actually determined by the theme, but all themes I’ve tried display a static list of pages.

    The easiest option is to include the links on the page itself. For example, the Themes page on this website has several sub-pages, which I’ve included in the page itself.

  23. The README of the debian-distribution says, “If there is demand for a certain theme it may be included in this package.” May I demand to the debian maintainer to include giraffe?


    PS: A little typo in sidebar.php: Infomation —> Information

  24. That’s fine with me – let me know how it goes. I’ve an update coming out soon, hopefully without stupid spelling mistakes, so that will be the best one to include!

  25. I downloaded the theme and plugin today and am using them exclusively on my site. I have to say nice job, it’s nice to look at and easy to use.

    I was looking at the error log on my website, though, and I saw hundredss of repetitions of

    [Thu Nov 10 19:02:36 2005] [error] PHP Warning: Invalid argument supplied for foreach() in …/wp-content/themes/giraffe/giraffe.php on line 87

    Ihow it is affecting it really, but I figured I’d point it out to you.

  26. This is the most well presented theme that I have seen to this date. I hope that you win an award for it somehow.

    I don’t mean to sound “thick” but can someone tell me how to add/change the links on the top navigation bar? I’ve been looking through the .php files but can’t seem to find the lines for where I can edit the navigation bar links.

    Thanks in advance…

  27. At the moment, no. I’ve played around with a configuration option to enable a third column, but just haven’t had time to finish it. One day soon, maybe!

  28. You know, this is one of those “yes, I am a wizard” questions… But, and at any rate…. I am running a older version of this most wonderful theme.

    Of course, I want to update, to take advantage of the newest fixes.

    But, I am scared.

    I really do not know enough about WordPress / changing themes to know if when I update to a newer version of UrbanGiraffe… if I lose my customizations?

    What are some caveats? Little bits of advice… My “customizations” are very shallow… extrinisic in nature.

    *walks away dejected*

  29. It depends where the customizations have been made. I’ve tried to seperate the core theme so that customizations can be made without future changes affecting them, but most of the time it’s not possible.

    If you want to experiment you can download a backup copy of your existing theme. You’ll then be fairly safe trying the new one as you can always re-install your older version should it go wrong.

    If you wanted to take it a step further you could create a local copy of your website on your own computer, and then you can play around to your hearts content without worrying about destroying your live site. It’s a lot more work in the short term, but might be worth it.

    If you think other people could be interested in the same changes then suggest them here and I’ll probably include them as a configuration option in a future release!

  30. Comprehensive list of 429 Free WordPress 1.5 Themes / Templates available for download

    Largest list of free WordPress Themes. Constantly growing, currently listing over 370 wordpress 1.5 themes, including numerous 3-column template layouts

  31. Is there anyway I can extend the older posts list that appears on the bootom of my blog using this theme to include more than what it currently shows? Although I just started posting to this blog this morning, it doesn’t show the first several while looking at the site although they are in the WP history.

    OT: How can I change the Giraffe color that I am currently using to one of the others that comes with the download? TIA.

  32. The number of posts displayed at the bottom is determined by the WordPress configuration setting in ‘Options/Read’ – Number of posts to display. The number you specify here will determine how many posts are displayed on the whole page, so the number of older posts will be total – lead – recent.

    The colour scheme can be set using the Giraffe theme plugin and selecting your scheme from the drop-down box.

  33. After i upload gerafe plugin into plugin folder.
    I recive error message like this:

    Warning: main(/home/ridhaz01/public_html//wp-content/themes/giraffe/giraffe_functions.php): failed to open stream: No such file or directory in /home/ridhaz01/public_html/wp-content/plugins/giraffe.php on line 13

    Warning: main(/home/ridhaz01/public_html//wp-content/themes/giraffe/giraffe_functions.php): failed to open stream: No such file or directory in /home/ridhaz01/public_html/wp-content/plugins/giraffe.php on line 13

    Warning: main(): Failed opening ‘/home/ridhaz01/public_html//wp-content/themes/giraffe/giraffe_functions.php’ for inclusion (include_path=’.:/usr/lib/php:/usr/local/lib/php’) in /home/ridhaz01/public_html/wp-content/plugins/giraffe.php on line 13

    Fatal error: Call to undefined function: giraffe_initialize() in /home/ridhaz01/public_html/wp-content/plugins/giraffe.php on line 19

    I confuse about it, pls help.


  34. Ridhaz: You can change ‘Your name here’ by installing the Giraffe theme plugin, and then going to the Giraffe administration screen from the WordPress administration panel. There is an option there to modify the copyright notice.

    As to the other problem, does the file ‘giraffe_functions.php’ exist in your wp-content/themes/giraffe directory?

  35. Hi John..

    ‘giraffe_functions.php’ is exist in my wp-content/themes/giraffe directory. What should I do with it?

    After I upload giraffe plugin into my plugin directory, there is an error. like what i said before. So i cant find Giraffe administration screen from the WordPress administration panel.

    thanks for the reply John.

  36. Did you keep the plugin inside the giraffe directory? It’s important that you retain the directory structure so that you have a directory wp-content/plugins/giraffe/, and inside that are all the plugin files.

  37. John,

    First – I love the theme. Second, I have a question about gravatars. How do I use them? I have all the necessary plugins installed and activated and am able to see the default gravatar (?). But how do I add my own? I cannot find this in the options…


  38. Is it just me or does Giraffe not work with WP 2.0? I was fine before the update but the last 2 times I activated Giraffe, the Presentation screen went white, after unloading it, I was fine again; did I skip a step while installing it this time or am I not the only one. TIA. P.S. I see now why I loved my Giraffe so much.

  39. I’ve got the Giraffe theme working under 2.0 with no problems, although I’m sure they may be some ‘quirks’ with some environments. A fully 2.0 compatible version will be arriving some day soon.

  40. […] Il tema che ho scelto è Urban Giraffe: incredibilmente versatile e facile da plasmare grazie anche alla pòossibilità di scegliere tra quattro colori disponibili (blu, grigio,rosso e verde)   […]

  41. I downloaded the theme and loved it.I am using the Brown color scheme.However, I cannot seem to change the red text color for the outbound links to save my life.Can anyone point me in the right direction please?

    Thank you 🙂

  42. standard XP Home sp2 (up to date), just like 90+% of the people out there, can’t wait bud! I can’t take all the k2 updates lol.

    sorry Dana, I don’t have it loaded right now…

  43. […] This new theme is called Giraffe and I passed on it for a long time until I read an article about how easily it can be configured to fit one’s tastes.Plus the original banner with the giraffe was a complete turnoff… lol. […]

  44. […] Bloggverktyg – WordPress Det finns hur mÃ¥nga bloggtjänster som helst för den som vill starta en blogg, även för dem som inte vet hur man gör en hemsida.  Jag ville utforma min blogg som min hemsida och började därför söka pÃ¥ internet efter det bästa verktyget. Efter lite läsande bestämde jag mig för WordPress som verkar vara väldigt uppskattat bland dem som använder det. Tre stora anledningar till att jag valde WP var att det skulle vara enkelt att installera, att det fanns en bra support/forum och att det inte hade nÃ¥gra begränsningar för designen. Jag är väldigt nöjd med WP sÃ¥ här lÃ¥ngt och till min hjälp för att skapa designen just i WP hittade jag en väldigt bra guide i pdf som gÃ¥r att skriva ut. […]

  45. It worked for me in IE but it tried to kickoff the QuickTime viewer. It asked if I wanted to accept the mime types it wanted to change, I said no, and it opened the little icon you posted in the middle of the IE window (FF shows it in the upper-left). Check your file associations. G/L.

  46. I have not noticed this before as I have not had enough posts on it until now. If I select a month to look at or a topic area the new window opens but only a certain amount of posts are shown. There are no navigation buttons to go to the next page. For instance in October I should have posts back to the 6th yet the page for october only goes back to 20th. There is no next page button.

Leave a Reply

Your email address will not be published. Required fields are marked *