有两种方法可以满足您的需求。其中一个在Identify the page being shown while in The Loop:
$post_id = get_queried_object_id();
不幸的是,这可能会中断。
get_queried_object_id()
查找全局变量
$wp_query
对于ID,该变量可以在页面呈现期间通过
query_posts()
. 对于以下函数也是如此
is_page()
.
但是您可以更早地在template_redirect
, 存储它的值,并将其放入您的widget类中。
首先,我们需要一个helper函数来收集帖子ID,以便以后使用:
add_action( \'template_redirect\', \'collect_real_post_id\' );
function collect_real_post_id()
{
static $post_id = 0;
if ( is_singular() && \'wp_head\' === current_filter() )
$post_id = get_queried_object_id();
return $post_id;
}
现在,您可以在任何地方使用该值,例如
widget()
方法:
class My_Widget extends WP_Widget
{
public function widget( $args, $instance )
{
$post_id = collect_real_post_id();
if ( ! $post_id ) // 0 evaluates to FALSE
return;
// do something with the post ID
}
}