[wp-hackers] "Posts page" feature and is_page()

Eric Marden wp at xentek.net
Sat Mar 29 18:41:07 GMT 2008

> If you want to know whether you're on the posts page, use
> $wp_query->is_posts_page
> There ought to be a function...

I agree. Here is my version of this function:

function is_posts_page () {
	global $wp_query;

	return $wp_query->is_posts_page;

But the more I played with this, the more I realized I needed more  
than just this.

For one, and this may be by design, but there is nothing to test  
whether this feature turned on or not, except by testing  
get_option('page_for_posts') - which returns the ID if this option is  
turned on, and nothing if it doesn't (because the entry in the DB is  
either there or not). A more 'authoritative' test function may be  

There is a function get_page_link, but yet you can't get the link from  
the page object (get_page(get_option('page_for_posts'),OBJECT)), as  
guid was empty when I played with it. So it means that when you want  
to build a menu item for a page, it looks something like this:

$posts_page = get_page(get_option('page_for_posts'),OBJECT);
<a href="<?php echo get_page_link(get_option('page_for_posts')); ?>"  
title="<?php echo $posts_page->post_title; ?>"><?php echo $posts_page- 
 >post_title; ?></a>

And last but not least, wp_list_pages doesn't seem to allow you to  
apply css or other attributes to the output. If I could do this, and  
do this selectively (i.e. by page ID, similar to exclude) I probably  
wouldn't have needed the other hackery to make this work, as all I  
wanted to do was apply .current_page_item to the posts page menu item  
in my theme.

Am I just missing something and there is an easier way to do this, or  
do I just have a special case WP can't handle elegantly yet?

Thanks for all your help so far,


More information about the wp-hackers mailing list