Tips & Tricks
Pulling custom fields from outside the loop
In the last post “Creating a custom widget” I showed you how to create a custom widget. Well in this post I will show you how I used my custom widget to display all post with a certain custom field from outside the WordPress loop.
In the last post I used this tag:
<?php include(TEMPLATEPATH . '/includes/showcase.php'); ?>
Now I will show you what the file showcase.php
has:
<ul> <?php global $wpdb; $sql = "SELECT wposts.* FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = 'gallery-url' AND wposts.post_status = 'publish' AND wposts.post_type = 'post' ORDER BY wposts.post_date DESC LIMIT 8"; $pageposts = $wpdb->get_results($sql, OBJECT); $output = $pre_HTML; foreach ($pageposts as $post) : setup_postdata($post); ?> <li><a href="<?php echo get_post_meta($post->ID, "gallery-url", $single = true); ?>" title="Link to <?php the_title(); ?>"> <img src="<?php echo get_post_meta($post->ID, "image", $single = true); ?>" alt="<?php the_title(); ?>" /></a></li> <?php endforeach; ?> </ul>
That’s it! The most important item you may want to change for your own custom field is the line : AND wpostmeta.meta_key = 'gallery-url'
. Where you would change the text in bold to match your own custom field value.
Update:
Check out Austin from PressedWords comment below.
With his great advise I was able to figure out why all my attempts to use the query_post weren’t working. it came down to this line of code: <?php echo get_post_meta($post->ID, "gallery-url", $single = true); ?>
, that was what I had in my code, and the $post->ID
is the reason my code would not echo or print the custom field’s value. Solution? replace $post->ID
with get_the_ID()
. HA, so simple.
Themes
Add additional meta boxes to Hybrid Theme
At the time of writing this post I have Theme Hybrid as my parent theme, and am using a custom version of Hybrid News that Justin Tadlock offers to the public.
Well I want to tell you how you can add additional custom meta boxes to your child theme’s running the Hybrid Theme.
In your child function.php
file just add the following to create a new post meta box:
/** * Add additional post meta boxes * * by WPCult */ function wpcult_post_meta_boxes($meta_boxes) { $meta_boxes['image'] = array( 'name' => 'image', 'default' => '', 'title' => __('Image:'), 'type' => 'text', 'show_description' => false, 'description' => __('Please use a full size image, larger than 500px (this photo will dynamically re-size itself!'), ); return $meta_boxes; } add_filter('hybrid_post_meta_boxes', 'wpcult_post_meta_boxes');
This will create a custom meta box called Image, and will create a custom field with the id of image.
Additionally you can create this on pages as well by copy/paste and replacing “post_meta_box” with “page_meta_box” every where inside the function.
Tips & Tricks
Sick of images being to large for the content area?
Have you ever uploaded an image that might have been a tad bigger than the width of your content area? I know I have! So here is a little CSS fix to handle these situations.
.post img { max-width: 600px; height: auto; }
That’s it, really simple huh. Just make sure that you change the .post
to the correct body class(which starts with a “.“) or body ID(which starts with a “#“).
Would you like a quick explanation?
The CSS is just telling any image inside the class of .post
to not be more than 600px wide. By the way make sure you change it to fit the dimension of your content width. And the height attribute is set to auto to automatically change the height to match the new width. 🙂
Tips & Tricks
How to: Display RSS feeds from anywhere
Here is a simple way to display any RSS feed in your WordPress blog.
<?php include_once(ABSPATH . WPINC . '/rss.php'); $rss = fetch_rss('http://feeds2.feedburner.com/WPCult'); $items = array_slice($rss->items, 0, 4); if (empty($items)) echo '<li>No items</li>'; else foreach ( $items as $item ) : ?> <a style="font-size: 14px;" href='<?php echo $item['link']; ?>' title='<?php echo $item['title']; ?>'><?php echo $item['title']; ?></a><br /> <p style="font-size: 10px; color: #aaa;"><?php echo date('F, j Y',strtotime($item['pubdate'])); ?></p> <p><?php echo substr($item['summary'],0,strpos($item['summary'], "This is a post from")); ?></p> <?php endforeach; ?>
The first step is to include the WordPress file rss.php
then will apply code after to style the feeds.
Of coarse I forgot to mention, change the RSS feed to the feed you want to pull.
-
Tips & Tricks6 months ago
WordPress Security Hacks
-
Pages1 month ago
Write For Us – Guest Post
-
Showcase1 month ago
StylizedWeb.com
-
News4 weeks ago
How to: Show/Hide any div box with jQuery in WordPress
-
Tips & Tricks5 days ago
Remove the title attribute using jQuery
-
Tips & Tricks5 months ago
How to: show/hide a widget in WordPress with jQuery
-
Plugins5 months ago
Top Membership plugins
-
Tips & Tricks1 month ago
Limit the characters that display on the_title
Austin
January 17, 2009 at 1:49 pm
No need to query the database directly. You can use the WordPress API to accomplish the same thing:
<ul>
<?php
query_posts(array(
'meta_key' => 'gallery-url',
'showposts' => 8,
));
while( have_posts() ) : the_post(); ?>
<li><a href="<?php echo get_post_meta(get_the_ID(), "gallery-url", $single = true); ?>" title="<?php echo attribute_escape(sprintf('Link to %s', get_the_title())); ?>">
<img src="<?php echo get_post_meta(get_the_ID(), "image", $single = true); ?>" alt="<?php echo attribute_escape(get_the_title()); ?>" /></a></li>
<?php endwhile; ?>
</ul>
If you can, it’s usually better to use the WordPress API, because your code won’t have to change if the underlying database structure in WordPress changes (as it has before), you get the benefits of the built-in object caching (or caching plugins, if they’re being used), and it tends to allow better compatibility with other plugins.
Austin’s last blog post..WordPress Use Declines Among Top 100 Bloggers
frosty
January 17, 2009 at 3:03 pm
Thanks for that, I will give that code a shot. I tried so many variations, and it wouldn’t show the custom fields, just the html code I input.
😉
P.S. If that works I will write a post based on your recommended code!
Pingback: Weekend Links - Jan 23, 2009 | OMNINOGGIN
Guennadi M
June 14, 2009 at 8:56 am
To display custom field outside the loop, you need to make the post ID available outside the loop, as per http://www.ausbusiness.net/review/wordpress-custom-fields-outside-loop/
Guennadi M