获取WordPress中send_headers操作的帖子ID


Getting post id on send_headers action in WordPress

在WordPress中是否可以在钩子send_headers获取当前帖子的ID?全局$post和$wp_query不起作用,或者我做错了什么。

class myClass {
public function __construct() {
    add_action('send_headers', array($this, 'myFunction'));
}
public function myFunction() {
    // need to get post ID here
}
看起来

WordPress还没有达到在触发操作send_headers时启动$wp_query的地步。

当问题询问如何获取帖子 ID 时,此答案假设您在 url 中有 slug。如果 slug 是 url 的最后一部分,那么这将为您获取帖子 ID。

$post = get_posts ( array (
    'name' => pathinfo ( $_SERVER['REQUEST_URI'] )['filename']
) )[0];
echo $post->ID;

此结果需要在每次使用时进行测试,但应该适用于大多数目的。

您甚至可以尝试这样的事情:

global $wp;
$post =  get_page_by_path($wp->request);
echo $post->ID;