the_ID template tag can be used in the following format:
<?php the_ID(); ?>
Outside the Loop or out of the context of the post, such as in header of footer and even sidebar area in the templates of WordPress’s blog, the_ID() cannot be used as a function. Instead, $post->ID will be used to return the post ID (the syntax can also be used inside the Loop of the post by declaring $post as global). $post is a global object that holds various information about the posts displayed on the page. So $post->ID will return the post ID of the post. It the $post is used inside a function, the $post has to be declared as a global variable. For example:
// Works inside and outside of the Loop
function function_name() {
global $post;
$thePostID = $post->ID;
}
or:
// Works in single post outside of the Loop
function function_name() {
global $wp_query;
$thePostID = $wp_query->post->ID;
}
$post->ID can be called directly outside of the Loop too in a single post template, such as <?php echo $post->ID ?> will print display the post’s ID number.
In the multiple posts view page such as index page or archive page, you should use custom WP_Query or query_posts to return the content that you want as there may be more than one post IDs that are returned.