admin_init中的wp_query为空

时间:2012-02-23 02:32:40

标签: wordpress

我正在开发一个插件,我遇到的一个问题是我无法在分配给admin_init钩子的函数中获取post id。

我尝试了几种不同的方法;但是,他们似乎都使用$ wp_query。

以下是我正在使用的代码的简单版本。我刚刚实现了这样的代码,并通过查看“post edit”页面来运行它

add_action('admin_init','do_optional_featured_article');
function do_optional_featured_article()
{
    global $wp_query;
    echo "<pre>";
    print_r($wp_query);
    echo "</pre>";
    die();
}

$ wp_query是一个基本上是空的数组,值得注意的是,帖子成员是空的

- 编辑 -

我在wordpress.stackexchange上得到了一些建议,并在此函数中添加了:

function get_admin_post()
{
    if( isset($_GET['post']) ) 
    {
        $post_id = absint($_GET['post']); // Always sanitize
        $post = get_post( $post_id ); // Post Object, like in the Theme loop
        return $post;
    }
    elseif( isset($_POST['post_ID']) )
    {
        $post_id = absint($_POST['post_ID']); // Always sanitize
        $post = get_post( $post_id ); // Post Object, like in the Theme loop
        return $post;
    }
    else 
    {
        return false;
    }
}

1 个答案:

答案 0 :(得分:2)

我认为this answer会有所帮助。它指出,为了获取全局$post/$posts变量,您可以加入的最早行动是wp操作。在操作挂钩reference on the codex中,您可以看到wp操作在admin_init之后执行一点,这就是为什么您无法在那里检索任何帖子的原因。

所以,这应该有效:

add_action('wp','do_optional_featured_article');
相关问题