我正在开发一个插件,我遇到的一个问题是我无法在分配给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;
}
}
答案 0 :(得分:2)
我认为this answer会有所帮助。它指出,为了获取全局$post/$posts
变量,您可以加入的最早行动是wp
操作。在操作挂钩reference on the codex中,您可以看到wp
操作在admin_init
之后执行一点,这就是为什么您无法在那里检索任何帖子的原因。
所以,这应该有效:
add_action('wp','do_optional_featured_article');