在Wordpress插件中获取帖子id

在Wordpress插件中获取帖子id,wordpress,plugins,Wordpress,Plugins,我试图在我的自定义wordpress插件中获取帖子id,并使用以下代码: global $post; $current_page_id = $post->ID; var_dump($current_page_id); 但是没有成功。使用var\u dump我接到了每个电话null。 比,如果我添加到模板,则输出效果更好: add_action('wp_footer', 'test'); function test() { global $post; $current_pa

我试图在我的自定义wordpress插件中获取帖子id,并使用以下代码:

global $post;
$current_page_id = $post->ID;
var_dump($current_page_id);
但是没有成功。使用
var\u dump
我接到了每个电话
null
。 比,如果我添加到模板,则输出效果更好:

add_action('wp_footer', 'test');
function test() {
    global $post;
    $current_page_id = $post->ID;
}
我想在插件内部实现的是将当前的post id传递给我的一个函数。比如:

my_function($base_url, array('variable_to_post' => $post->ID));

当您在插件中使用此选项时,这是可能的:

add_action('wp_head','getPageId');
并声明以下函数:

function check_thankyou(){
    if(!is_admin()){
        global $wp_query;
        $postid = $wp_query->post->ID;
        echo $postid;
    }
}

如果您需要从wordpress插件获取帖子id,您可以在
wp
action hook中运行插件,以访问全局
$wp\u query
对象

这是一个简单的测试解决方案

<?php
/*
Plugin Name: Plugin Name
Plugin URI:
Description: Plugin Description
Version: 1.0.0
Author:
Author URI:
*/

if (!defined('WPINC')) {
    die;
}

/**
 * Class MyPlugin
 */
class MyPlugin {
    private $postId;

    /**
     * MyPlugin constructor.
     * @param $wp_query
     */
    public function __construct($wp_query) {
        if ($wp_query && $wp_query->post) {
            $this->postId = $wp_query->post->ID;
        }
    }

    /**
     * Get Post Id
     * @return mixed
     */
    public function getPostId() {
        return $this->postId;
    }
}

/**
 * Start plugin
 */
add_action('wp', function () {
    global $wp_query;
    $myPlugin = new MyPlugin($wp_query);
    echo $myPlugin->getPostId();
});

我认为wp_footer依赖于主题,这意味着每个WordPress主题的作者都有权包含它。有关更多信息,请查看此项——您在哪里使用此代码$post global在single.php和循环中工作。@deroccha您也可以检查此链接,它看起来像是一个回调,足以调用当前的$post->ID。我创建了另一个函数,它实际上在页脚中呈现我的一个javascript输出,而不是从那里传回$post全局变量。