Feb
23
2010
0

WordPress Tip: bloginfo as a shortcode

I often need to help move a client’s redesigned website into WordPress at a new webhost. During this process, the client’s domain must remain pointing to the old website so there is no interruption in traffic. Repointing the domain becomes one of the last steps of the process.

WordPress addresses a potential problem here with a Template tag called bloginfo. Inside my theme’s templates, I use bloginfo(‘url’) rather than hardcoding my site’s URL. The actual URL is maintained in the Dashboard under Settings > General > WordPress address (URL). bloginfo(‘template_url’) adds the current theme path to the URL. Often when programming, computing a value gives you more flexibility than hardcoding a value.

Another area where I would like to have this flexibility is inside the actual content of the post. If I upload an image using the Media Uploader, it immediately computes the URL for the image. But I don’t want to have to come back later after the domain has been repointed to edit the URLs in the post. Can’t I have the same delayed computation that bloginfo(‘url’) provides, but inside the content?

Solution 1: Shortcodes for your URLs

Edit your theme’s functions.php

function my_url($atts, $content = null) {
  return get_bloginfo('url'); 
}
add_shortcode("url", "my_url");  
 
function my_template_url($atts, $content = null) {
  return get_bloginfo('template_url'); 
}
add_shortcode("template_url", "my_template_url");  
 
function my_images_url($atts, $content = null) {
  return get_bloginfo('template_url') . '/images'; 
}
add_shortcode("images_url", "my_images_url");

Using this shortcode, I can upload the image, insert the image into the post, and then modify the URL to use the shortcode. I don’t have to return to edit the URL later.

  <img src="[images_url]/chunky.jpg" />

Solution 2: Shortcode for bloginfo itself

I found this solution at Blue Anvil

function bloginfo_shortcode( $atts ) {
    extract(shortcode_atts(array(
        'key' => '',
    ), $atts));
    return get_bloginfo($key);
}
add_shortcode('bloginfo', 'bloginfo_shortcode');

Demo

That was uploaded with the Media Uploader, and here’s the final markup

<a href="[bloginfo key='url']/wp-content/uploads/2010/02/chunky-e1266723693872.jpg">
<img src="[bloginfo key='url']/wp-content/uploads/2010/02/chunky-e1266723693872-225x300.jpg" 
alt="" title="chunky" width="225" height="300" class="alignnone size-medium wp-image-462" /></a>
Written by chris in: Uncategorized |
Feb
18
2010
0

CodeIgniter Tip: Body class tags

WordPress 2.8 came out with the body_class() function which allows you to hang your per-page (or per-whatever) CSS off of dynamically generated class attributes on the body HTML tag. I’m going to show you how to have some of that flexibility when using the CodeIgniter PHP framework.

CodeIgniter URLs often take the form of http://my-cool-website.com/account/change-password, where account is the controller and change-password is the function. I want CodeIgniter to automatically put a CSS class “account-change-password” on the body tag whenver a user visits that page.

Step 1. Edit controllers/application.php

Application is the superclass of all of my other controllers, including the Account controller. Here we add 2 variables and populate them in the Application() constructor.

class Application extends Controller {
 
  var $controller;
  var $function;
 
	function Application() {
	  parent::Controller();
	  $this->controller = $this->uri->rsegment(1); // The Controller
          $this->function = $this->uri->rsegment(2); // The Function
	}

Step 2. Edit the body tag in your layout template

<body class="<?php echo $this->controller; ?>-<?php echo $this->function; ?>">

now you’re ready to make up some CSS such as

body.account-change-password  #main-content ul {
  list-style-type: none;
}

So now your page elements can have alternate CSS targeted to which controller-function page is currently displaying.

Written by chris in: Uncategorized |
Sep
25
2009
0

Playing the Guitar in 20 Questions

fretboard-triads

Check out this web page I wrote to help a player visualize and follow along with the process explained in the video below. If you color code each chord you build, you’re left with a good study guide for practicing.

If you have a guitar, I hope you’ll take a few minutes and try out the page. Let me know if you find it useful or not.

A while back I found this video which shows how to harmonize a maj7 chord over the major scale.

This exercise can be done with any chord and any scale that chord belongs to. As the chord walks up the scale, its sound retains some familiarity yet it also has to squeeze and stretch along each degree in order to remain in key. A reason you would do this exercise is to find other chords to consider for a progression.

Written by chris in: Uncategorized | Tags: , , , ,
Feb
16
2009
0

Paul Davis and the catchy chorus

Take a few minutes to mellow out to the late Paul Davis. One evening as “Sweet Life” came up in my Pandora queue, someone insisted it was a rip-off of Paul Davis’s “Cool Night”. After asking YouTube, we sorted it out. They’re both from Paul Davis.  Listen to the chorus of both and you’ll see how easy they are to confuse.

First, “Sweet Life”

and now “Cool Night”

I tried to use YouTube’s deep linking to cue up the chorus but it seems to not always work.

Written by chris in: Music | Tags: , , , , ,
Jan
06
2009
0

Meet my fine (but not 0.5mm fine) pencils

I’m tired of not having any posts, so here’s something completely retarded.

These are my mechanical pencils. I prefer 0.7mm because the lead is thicker and won’t break under the plowing scrawl.

From back to front

The Pentel in back is the oldest and has the most mileage. I wish I actually did know much distance it has logged. There’s only so much tic-tac-toe one can play. But anyway. It also features a convenient side-mounted lead feeder button.

Next is the Pentech. This one is like a Corvette. Unlike the Pentel, this pencil has a nice shape and feels slightly heavy. I’m routinely impressed by how frictionless and pen-like the extra weight makes it seem. However, this one has a low capacity for lead. Maybe 3 is the most it will hold at once. I’ve had to retire this pencil however because I once crammed 4 leads into it, and it jammed up the innerworks. Poor pencil. I would’ve kept you with me forever. I told you this was going to be retarded.

Finally, the Papermate is the newest addition. It doesn’t have the right weight. Its top seems to be crimped around the eraser. I wonder if they’re meant to be just thrown away. Very odd, if that’s the case. I purchased this one in a set of four. The rotary lead feeder gives an extra ergonomic flair.

Thanks for listening to me introduce the special pencils in my life.

UPDATE: My newest is a Pentech Sensor 0.7mm (not pictured). Side feed. Refillable. The eraser basket twists to feed out more eraser, which are also refillable! The only down side so far is that I often break the lead. That rarely happened with the others.

Written by chris in: Uncategorized |

Theme: TheBuckmaker.com Blog Templates | Review Just Host, Web Radio