Category ID is easy:
$cat
Post ID outside The Loop is a bit harder:
<?php
if(get_query_var('p')) {
$postid = get_query_var('p');
} else {
$postname = get_query_var('name');
$postid = $wpdb->get_var("SELECT ID from $wpdb->posts WHERE post_name = '$postname'");
}
?>
You can then use $postid for your…post’s ID. If you use the default permalink structure on your blog ( /?p=1 ), this alone will do:
<?php $postid = get_query_var('p'); ?>
(If anyone has a way to get the ID on custom permalink blogs without querying the database as above, I’d like to know it!)
Thread Starter
ult
(@ult)
I didn’t get to use $cat from within my template index.php file; I’ve heard that I have to set up $cat in the root index.php instead? How it can be done?
Did I get it right that if there are permalinks like /category/etc., get_query_var(‘cat’) won’t work?
get_query_var() is a wrapper for the PHP $_GET variable, so get_query_var(‘cat’) works if you’re using the default permalink structure. Otherwise you’ll have to go through a bit of rigamarole (as I did above for post ID) using get_query_var(‘category_name’).
However, $cat as a variable is always available in WordPress when in category view.
Here’s an easier way that works for me with or without custom permalinks:
global $posts // if necessary
...
$postid = $posts[0]->ID // note that 'ID' must be upper-case capitals
[This is essentially the code used in wp_title()]
However, it does strike me as odd that The Loop is not initialised before get_header() is called. For example, it must be a common requirement to want to add custom <meta> tags in the header based on custom fields on the post/page.
Any comments please post at http://ww.wp.xz.cn/support/topic/32870
how do i install word press?
I am a newbie. can you break it down a little further. I do not have much experience.
You need to start a new thread – after you do a site search for “how to install WP” or something similar, please.
This will fetch the id of the category you are in (assuming this is a category archive listing page):
<? global $cache_categories;
$category_id = 1; // sensible default for me
foreach ($cache_categories as $cat) {
if (strcmp($cat->cat_name, $category_name) == 0) {
$category_id = $cat->cat_ID;
break;
}
}
?>
Thank you for this!:
global $posts // if necessary
...
$postid = $posts[0]->ID // note that 'ID' must be upper-case capitals
I’ve been struggling with this for a while. This is a great help.