This is my function in function.php file
function getcity(){
global $wpdb;
if($_POST[\'state\'])
{
$id=$_POST[\'state\
Here is one my function what never fail.
I don't know why WordPress not made something like this before.
/**
* Get current page ID
* @autor Ivijan-Stefan Stipic
* @version 1.0.0
**/
function get_current_page_ID(){
global $post, $wp_query;
if(!is_null($wp_query) && isset($wp_query->post) && isset($wp_query->post->ID) && !empty($wp_query->post->ID))
return $wp_query->post->ID;
else if(function_exists('get_the_id') && !empty(get_the_id()))
return get_the_id();
else if(!is_null($post) && isset($post->ID) && !empty($post->ID))
return $post->ID;
else if('page' == get_option( 'show_on_front' ) && !empty(get_option( 'page_for_posts' )))
return get_option( 'page_for_posts' );
else if((is_home() || is_front_page()) && !empty(get_queried_object_id()))
return get_queried_object_id();
else if($this->get('action') == 'edit' && && isset($_GET['post']) && !empty($_GET['post']))
return absint($_GET['post']);
else if(!is_admin() && isset($_GET['p']) && !empty($_GET['p']))
return absint($_GET['p']);
return false;
}
This function check all possible cases and return ID of the current page or false on the fail.
You want the global variable $post
as documented here:
http://codex.wordpress.org/Global_Variables
Declare the $post
global like so:
global $post;
Then you should be able to access the id of the post using $post->ID
.
Here is a more complete doc of the attributes available through the $post
global: http://codex.wordpress.org/Function_Reference/$post
Note that $post
or get_queried_object_id()
do not work until the first query was fired. So this options are available only at the hook template_redirect
and later. But functions.php is included much earlier (before the hook after_setup_theme
) so this isn't a solution.
A function that should work pretty much anywhere would be
$url = 'http://' . $_SERVER[ 'HTTP_HOST' ] . $_SERVER[ 'REQUEST_URI' ];
$current_post_id = url_to_postid( $url );
Here is a overview over hook execution order.
If your code is executed after the template_redirect
hook these option may be better:
global $post;
$id = $post->id;
or
$id = get_queried_object_id();