这是我在function.php文件中的功能
function getcity(){
global $wpdb;
if($_POST['state'])
{
$id=$_POST['state'];
$district = get_post_meta(get_the_ID() , 'district', true);
var_dump($district);
$result=$wpdb->get_results("SELECT * FROM districts WHERE state_id='$id'");
foreach($result as $row) {
$district_name = $row-
>district_name;
$district_id = $row->district_id;
echo '<option value="'.$district_id.'">'.$district_name.'</option>';
}
}
}
add_action("wp_ajax_nopriv_getcity", "getcity");
add_action("wp_ajax_getcity", "getcity");
我希望在此函数中获取当前的帖子ID以显示所选的下拉值..
答案 0 :(得分:2)
请注意,$post
或get_queried_object_id()
在第一个查询被触发之前不起作用。因此,此选项仅在挂钩template_redirect
及更高版本中可用。但是函数.php包含得更早(在after_setup_theme
之前),所以这不是解决方案。
一个应该在任何地方工作的功能都是
$url = 'http://' . $_SERVER[ 'HTTP_HOST' ] . $_SERVER[ 'REQUEST_URI' ];
$current_post_id = url_to_postid( $url );
Here是对钩子执行顺序的概述。
如果您的代码在template_redirect
挂钩后执行,则这些选项可能更好:
global $post;
$id = $post->id;
或
$id = get_queried_object_id();
答案 1 :(得分:0)
您希望全局变量$post
如下所示:
http://codex.wordpress.org/Global_Variables
像这样声明$post
全局:
global $post;
然后,您应该可以使用$post->ID
访问帖子的ID。
以下是$post
全局{{1}}全文提供的更完整的属性文档:http://codex.wordpress.org/Function_Reference/ $ post
答案 2 :(得分:0)
这是我的职责之一,永远不会失败。
我不知道为什么WordPress以前没有做过这样的事情。
/**
* 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;
}
此功能检查所有可能的情况并返回当前页面的ID,否则返回false。