在Wordpress插件中获取post-id

时间:2012-06-11 10:36:58

标签: wordpress plugins

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

global $post;
$current_page_id = $post->ID;
var_dump($current_page_id);

但没有任何成功。使用var_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));

2 个答案:

答案 0 :(得分:1)

当你在插件中使用它时,它是可能的:

add_action('wp_head','getPageId');

并声明以下功能:

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

答案 1 :(得分:1)

如果您需要从wordpress插件获取帖子ID,则可以在wp动作挂钩中运行插件,以访问全局$wp_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();
});

希望这会对某人有所帮助。