Posts Tagged WordPress
WordPress jQuery conflict solved
Posted by admin in Asides, Web design & development on June 12, 2010
After several hours of thinking I’m being a idiot (happens occasionally) I discovered that sometimes you’ll need to call
<?php wp_head(); ?>
before any jQuery scripts (or concatenated scripts in my case).
It’s been hours and I couldn’t figure out why none of the Carousel scripts I was trying today wanted to work – while all other scripts and plugins carried on just fine.
And yes – I am already trying to prevent jQuery conflicts with
<?php wp_enqueue_script("jquery"); ?>
So if your carousel (or other) scripts don’t want to work – try shaking up your head.
WordPress loop with x big posts in one column then a grid of y smaller posts in z columns
Posted by admin in CMS, Web design & development on June 10, 2010
Here’s how I managed to get this loop to work for the custom WordPress theme I whacked off for my friend and erstwhile colleague Phil Morse AKA Digital DJ Tips
The challenge I set myself was to get the loop to display posts in two formats: first a certain number of posts with large excerpts and any images via the_content then a grid of 3 rows of mini-posts showing just the title… it may not sound tricky but the devil is in the detail: stepping in and out of the loop to open and close container divs is not widely documented (well not that I could find)…
Couple of catches
- using multiple loop solutions causes the pagination to fail: link to older posts would reload the same content. To get proper pagination you need to stick with one loop.
- I needed to inject some HTML in and around the mini posts to keep formatting and layout controllable:
- need to add a class of “last” on the last item in a row to make use of the full width available with margin right on all except the last element of the row
- each row of x mini-posts had to be wrapped in a div as these mini-posts are of unequal height (a design decision). With uneven heights floating them all within a single div causes the dreaded float-stack-horror.
- As we’re injecting extra HTML markup every x items we also need to be able to close this markup prematurely if we run out of posts before the row is finished. Therefore we need to know the total number of posts in the loop so this thing can close itself early if need be.
In the end I also decided that I wanted the logic to be easily adaptable to allow changes to the number of full excerpt posts and the number of columns in the following rows. Thats easily changed with the variable set at the outset here and by varying the denominator in the integer test bit (simplerer than it sounds).
Cut-n-paste to the chase already…
</span>
<pre><?php
get_header(); ?>
<div id="content">
<?php if (have_posts()) : ?>
<?php
/* Custom loop to show n main posts (title + excerpt) then
finish with remainder as small posts (just title) in markup that allows
columns of unequal mini-posts in rows.
Here one main post then subsequent mini-posts in rows of 3.
Total number per page defined in WP options
*/
$count = 0; //start the counter
$main_posts = 1; //set the number of main posts
?>
<?php // find out how many posts so we can close this thing properly at the last post
$totalposts = sizeof($posts); ?>
<?php while (have_posts()) : the_post(); ?>
<?php $count++; //increment counter by 1 ?>
<?php $small_posts_count = ($count - $main_posts) ; // calculate the number of small posts ?>
<?php if ($count < ($main_posts + 1)) : // if within the range of main post set above then... ?>
<div <?php post_class('sheet') ?> id="post-<?php the_ID(); ?>">
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<div class="entry">
<?php the_content('Read more') ; ?>
</div>
</div>
<?php else : // if loop is at small_posts start a wrapper div.loop2 for next row of posts ?>
<?php // if (count-1)/3 is an integer then it's first in the row: open the wrapper
if (($small_posts_count - 1) % 3 == 0 ) { echo '<div class="loop2 clearfix">';} ?>
<div class="sheet<?php if ((isset($small_posts_count)) && ($small_posts_count % 3 == 0 )) { echo ' last';} // same logic to add class of last to last item in row of three ?>" id="post-<?php the_ID(); ?>">
<h4><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h4>
</div>
<?php //close the row if multiple of three (using same logic as above) or if it's the last post
if (($count == $totalposts) || ($small_posts_count % 3 == 0 )) { echo '</div><!-- .loop2 -->';} // if is multiple of three ?>
<?php endif; ?>
<?php endwhile; ?>
<?php if (!is_page()) { // get older and/or newer posts links (not for single posts) ?>
<?php include( TEMPLATEPATH . '/tpl.nav.posts.php' ); ?>
<?php ; } ?>
<?php else : ?>
<?php include( TEMPLATEPATH . '/tpl.search.404.php' ); // get 404 error message ?>
<?php endif; ?>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
Long/short headings (or title tags) using WordPress Custom Fields
Posted by admin in CMS, Web design & development on May 19, 2010
[ This post is now largely if not entirely redundant now thanks to WordPress 3 menu options ]
Problem: WP titles are too long to fit in your navigation.
Solution:
Make the title short enough to fit in the navigation and then add a Custom Field into your post (in the example bellow it is set as “heading”) then edit your template file to render the longer version (“heading”) on the page.
Example:
In the Loop of your template swap out
<h1><?php the_title(); ?></h1> <?php the_content(); ?>
for:
<h1><?php// If has a custom field of heading ; then use that:
$customField = get_post_custom_values("heading");
if (isset($customField[0])) {
echo $customField[0];
} else {
the_title();
} ; ?></h1>
<?php the_content(); ?>
Hat-tip: Smashing Magazine
How to show just sticky posts in a WordPress template
Posted by admin in Web design & development on May 15, 2010
Want to just show just your sticky posts in a WordPress template? This guide tells you how (and much more) – but you’re hacking a theme and are stuck when it says “add this code before the loop” – well the loop is the bit that starts if (have_posts()). In the below example – how to when hackingh the soon-to-be-defunct default Kubric theme.
Add the following
< ?php
// this line just get the sticky posts:
query_posts(array('post__in'=>get_option('sticky_posts')));
// The Loop:
if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
Using WordPress.com stats and Google Analytics on a WordPress instal
Posted by admin in Analytics, Web design & development on February 3, 2010
Wondering which you should use?
Use both. (As recommended by Mr WordPress himself…)
The WordPress.com Stats WordPress plugin provides all the basic daily dose of stats you need – and all easily accessible from the WordPress Dashboard. Google Analytics gives you that extra oompf when you need it and will of course tie in with any Google advertising you have going on.
WordPress 403 import error and how to solve it
Posted by admin in Web design & development on February 2, 2010
[or Check Your WordPress.com Privacy Settings]
Yesterday I was being an eedgit. For the life of me couldn’t figure out why I was getting a 403 error “Remote file returned error response 403 Forbidden”. I was trying, and failing, to get image attachments to import from a WordPress.com XML export file into a self hosted WordPress installation.
I wracked my brains and Google but I couldn’t figure it out. Helpfully the blog I was working on [it's revamp of my friend Stewart Andersen's Homes and Travel site - now live ] is based on the excellent Carrington Framework by Crowd Favorite. Whilst researching it I’d noticed a link to their WordPress Help Center on their forums. I thought I’d have a shot at it and hoped it could be sorted within the three minutes of free help they offer…
Talking it through with them I realised what I’d done. To avoid duplicate content issues I’d set the WordPress.com blog to private before I finished the import. That simple. WordPress.com was deying access to the new blog based on the instructions I’d given. I was logged in so everything looked fie but the new site.
The answer: Make sure your WordPress.com privacy settings are not set to private!
I guess it’s the sort of stupid thing people don’t admit to – so until now no Google results to find.
Anyway many thanks to Matt Walters and the WordPress Help Center…
When you’re stuck, talk to the bear or give the WordPress Help Center a shout… [thanks guys!]
A Flickr slideshow iFrame in WordPress?
Posted by admin in amateur geekery, Photography on February 21, 2008
A-ha! So this is how it’s done…
For the full experience you’d need a canvas (or theme) that accommodates the Flickrslideshow minimum dimensions which are roughly 580px wide x 360px high. Right now this site’s main content div is only 500px wide – so there’s a bit of clipping on landscape images. But not enough to worry about too much just yet.
The code is this: <iframe style="border:0" width="500px" height="400px" src="http://www.flickr.com/photos/lazydada/sets/72157603491230286/show/">
