1

我正在尝试在我的自定义 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;
}

我想在我的插件中实现的是将当前的帖子 ID 传递给我的一个函数。所以像:

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

2 回答 2

3

如果您需要从 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();
});

希望这对某人有所帮助。

于 2019-11-08T08:12:17.060 回答
1

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

add_action('wp_head','getPageId');

并声明以下函数:

function check_thankyou(){
    if(!is_admin()){
        global $wp_query;
        $postid = $wp_query->post->ID;
        echo $postid;
    }
}
于 2013-09-22T18:48:38.347 回答