Skip to content
Jonathan Cutrell edited this page Jul 8, 2013 · 22 revisions

Here, you will find a list of useful snippets/tools you might easily forget. Editor's note: This is not the place to put passwords!

Wordpress find and replace all instances of old url

update wp_posts set post_content = replace(post_content, 'http://olddomain.com','http://newdomain.com');
update wp_posts set guid = replace(guid, 'http://olddomain.com','http://newdomain.com');
update wp_options set option_value = replace(option_value, 'http://olddomain.com','http://newdomain.com');

Wordpress Multiple Post Thumbnails: Get Just the Image URL

This is useful for getting the url for background-image inline.

$img = MultiPostThumbnails::get_post_thumbnail_id('post', 'secondary-image', $post->ID);   
$imgArray=wp_get_attachment_image_src($custom,'secondary-image-size');   
$url = $imgArray[0];   

Wordpress Loop Trick: Add Class Based On Iteration Count

<?php   
$i=0;   
$extraclass="";   
if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post();   
if ($i==0){   
$extraclass.=" first";   
}   
?>   
<div class="<?php echo $extraclass; ?>"></div>   
<?php endwhile; $i++; endif; ?>   

Or, if you need to add a class to every third element, try this:

<?php   
$i=1;   
$extraclass="";   
if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post();   
if ($i%3==0 && $i>1){   
$extraclass.=" third";   
}   
?>   
<div class="<?php echo $extraclass; ?>"></div>   
<?php endwhile; $i++; endif; ?>   

Notice the difference; the $i variable starts at 1 instead of 0 here to make iteration counting easier, and we use the modulus operator to check to make sure the element is the third.

Another common problem is inserting .row divs every x elements. Here is a pattern to use to solve that problem.

<?php   
$i=1;   
$extraclass="";   
if ($query->have_posts()) : echo "<div class='row'>"; while ($query->have_posts()) : $query->the_post();   
?>   
<?php if (($i-1)%3==0 && $i != 0){ echo "<div class='row'>"; } ?>
<div class='article'></div>   
<?php if ($i%3==0 && $i != 0){ echo "</div><!-- ending .row -->"; } ?>
<?php endwhile; $i++; endif; if ($i%3!=0){ echo "</div>"; } ?>   

Here, we are using a roundabout way of checking our iteration numbers. Specifically, we wrap the whole call in a <div class="row"> that closes out if the final element doesn't complete our proverbial three-wide grid (which would trigger the row completion on its own). The code really explains itself.

Clone this wiki locally