Category Archive: WordPress

Subcategories: Plug-Ins 

Posts related to programming for the WordPress publishing platform

HCSB Verse of the Day 1.0 – WordPress Plug-In

I have used a hack in the theme of my personal site for a while to obtain the “Verse of the Day” in the Holman Christian Standard Bible (HCSB) version. With things that I’ve learned about plug-ins, I decided to take a stab at creating a plug-in to do this work. That way, if I changed themes, I wouldn’t have to hack the new one they way I’ve hacked the current one.

The fruits of my labor is the new HCSB Verse of the Day plug-in for WordPress. It uses the reference from BibleGateway.com, then gets the text from their regular website. (They do not provide the service, citing copyright restrictions.) How to use the plug-in, along with my justification on copyright grounds, is in the top of the file’s comments. If they’re not clear, certainly post comments here and I’ll address them. (I do plan to submit the plug-in to WordPress.org – but, they require a specific README file format that it will take me a bit to put together.)

votd_hcsb.txt — HCSB Verse of the Day 1.0

To install it, download the file, rename it “votd_hcsb.php”, and upload it to your /wp-content/plugins directory. Then, enable it, and add the template tags to your theme – that’s it!

Tagged , , ,

WordPress 2.3 About to Drop

Version 2.3 of WordPress, the blogging software I use to produce this blog (as well as the other blogs on my site), will be released later today. I’ll be upgrading these blogs on Monday evening. There have been major pieces of WordPress that have been re-worked, and those are causing some plug-ins to not work correctly. None of my blogs are all that reliant on plug-ins – the “Share This” plug-in is the main one, and it’s been verified in 2.3 already.

There’s lots more information on the WordPress Development Blog – I won’t go into the details here. I’m confident this will be a smooth upgrade. I just wanted to let you know in case some things look strange, I’m on it.

Tagged ,

Incorporating an Akismet Counter Into a WordPress Theme

Akismet is, by far, the most popular anti-spam plug-in for WordPress. (It comes bundled with the download, so that gets it market share. But, it’s also very, very good.) It comes with a counter that can be put into a WordPress theme. It’s attractive, but its light blue color may not integrate well into a given theme.

I went digging around in the source code, and found the line that actually pulls the count from the database. Using this parameter, I was able to integrate a spam count into the sidebar that has a look consistent with the rest of the site.

Here’s the code that’s in use on the theme on this site.

1
2
3
4
5
6
7
8
<li id="spamstats">
	<h2><?php _e('Akismet-Eaten Spam:'); ?></h2>
	<ul>
		<li><a href="http://akismet.com"><?php
			echo(number_format(get_option("akismet_spam_count"))); ?>
			and counting...</a></li>
	</ul>
</li>

Of course, line 5 is the important one – that’s how to get the number, formatted for whatever locale the server is set up for. (On my personal blog, the number is up over 1,400!)

Tagged , , , ,

Posting Source Code in WordPress, Take 2

In my searching, I have found another WordPress source code plugin, called wp-syntax. This one uses GeSHi, the Generic Syntax Highlighter. It features many languages, and is extensible to even more. (If I ever post a COBOL snippet, I’ll probably add COBOL support to it, and contribute it to the codebase.)

To use it, you simply put a pre tag, followed by “lang=[language]“. It will also do line numbering. Of course, with a single “language” parameter, the embedded language will not be highlighted as well. In this case, the previous plug-in works better; although the syntax highlighting has to be done manually, it can handle multiple languages.

Here is what the example from the “Category DropDowns in WordPress” post looks like with lang=”php”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
/**
 * This creates a list of category links that can be used with a category dropdown
 */
$aCategories = get_all_category_ids();
$iMaxCat = 0;
foreach($aCategories as $iThisCat) {
    if ($iMaxCat < $iThisCat) {
        $iMaxCat = $iThisCat;
    }
}
$iMaxCat++;
?><div style="text-align:center;">
    <form name="categoryform" action="" style="text-align:center;">
    <script type="text/javascript">
        var aLink = new Array(<?php echo($iMaxCat); ?>);
<?php
foreach($aCategories as $iThisCat) {
    echo("aLink[$iThisCat] = \"" . get_category_link($iThisCat) . "\";\n");
} ?>
        function goCat() {
            window.location =
                aLink[document.getElementById('cat')[document.getElementById('cat').selectedIndex].text;
        }
    </script>
    <?php wp_dropdown_categories('class=sidebardropdown&orderby=name&show_count=1&hierarchical=1'); ?>
    <br />
    <button class="sidebarbutton" type="button" style="margin-top:5px;" onclick="goCat();">View Category</button>
    </form>
</div>

And, here’s what it looks like with lang=”javascript”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
/**
 * This creates a list of category links that can be used with a category dropdown
 */
$aCategories = get_all_category_ids();
$iMaxCat = 0;
foreach($aCategories as $iThisCat) {
    if ($iMaxCat < $iThisCat) {
        $iMaxCat = $iThisCat;
    }
}
$iMaxCat++;
?><div style="text-align:center;">
    <form name="categoryform" action="" style="text-align:center;">
    <script type="text/javascript">
        var aLink = new Array(<?php echo($iMaxCat); ?>);
<?php
foreach($aCategories as $iThisCat) {
    echo("aLink[$iThisCat] = \"" . get_category_link($iThisCat) . "\";\n");
} ?>
        function goCat() {
            window.location =
                aLink[document.getElementById('cat')[document.getElementById('cat').selectedIndex].text;
        }
    </script>
    <?php wp_dropdown_categories('class=sidebardropdown&orderby=name&show_count=1&hierarchical=1'); ?>
    <br />
    <button class="sidebarbutton" type="button" style="margin-top:5px;" onclick="goCat();">View Category</button>
    </form>
</div>

This is another option, and is probably what I’ll use for single-language posts, or posts where the embedded language may not be crucial.

Tagged , , , ,

Posting Source Code in WordPress

Traditionally, posting source code in a WordPress blog, especially if it were HTML or PHP, was problematic. There are a few reasons for this…

  • WordPress is very good about ensuring that it outputs valid XHTML, so it strips mis-matched and invalid tags. This is usually desirable, but it wreaks havoc with HTML and XML code posts.
  • Since WordPress is coded in PHP, blocks of PHP will attempt to execute.
  • White space is collapsed, which can kill any readability that the user has set out; the “visual editor” (TinyMCE) does its best to create efficient HTML. This can actually break spacing-oriented languages such as Python.

So how do you do it? It’s actually pretty easy, using the Code Markup WordPress plugin. You can download the plugin from that link, and upload it to ./wp-content/plugins. The instructions on the website are critical – the “visual” editor will not allow the code to come through unscathed. However, the visual editor only corrupts the code if you actually save it; what I have done is write the post using the visual editor, then disable it and put the code in. It’s the best of both worlds! (Make sure that, once you have the code in, you don’t edit the post using the visual editor – unless you have a good backup…)

The post below this one (about category lists in WordPress) was done using this plugin. In addition, you can use the <span> tag to do the color-coding. I created a few CSS classes (“key” for keywords, “func” for functions, “attr” for attributes, “embed” for embedded language), and used them to accomplish the color coding. It seems that it would be pretty easy to write another plugin that used a list of keywords to do this syntax highlighting; maybe that’s a challenge for another day.

A big “atta boy” to Bennet McElwee for a fantastic plugin!

Tagged , , ,

Category Drop-Down in WordPress

WordPress provides a template tag, wp_dropdown_categories, that inserts a drop-down list (the HTML <select> element) of categories, where the value of each item is the ID from the database. This works fine if you are not using rewrite rules (AKA “pretty links”) – you can construct a URL using the value (?cat=[number]). However, if you use any sort of rewrite rules, this does not work. I recently converted my personal site, which uses the Pool theme, to utilize a JavaScript array to assist with displaying category pages.

Here’s the code…

Edit: Code has been moved to this post.

This works for both “pretty” and standard links, as it uses the template tag get_category_link to specify the link.

Tagged , ,