调用SETUP_POSTData()导致“调用未定义的函数GET_USERData()”错误?

时间:2012-03-21 作者:jilseego

确切的错误是:

调用未定义函数get_userdata() 在/wp中包括/查询。php在线3567

我正在使用get_posts() 在我的插件中setup_postdata() 其中get_userdata() 已执行。我不知道发生了什么事。我看着query.php 看起来get_userdata() 是一个全局函数,访问它应该不会有任何问题,对吗?

MORE DETAIL:

我的插件是类形式的。这只是基本结构。实际上,实际代码中有多个函数。请注意get_posts() 发生post查询的函数。如果我删除它,则不会显示错误。

class myPlugin() {
   var $post_type = \'\';

   function __construct($post_vars = array()){
       if ($post_vars) $this->post_type = $post_vars[\'post_type\']
       $this->get_posts();
   }

   function get_posts() {
       $args = array(\'numberposts\' => -1, \'post_type\' = $this->post->type, \'post_status\' => \'publish\');
       $myposts = get_posts( $args );
       foreach( $myposts as $post ) : setup_postdata($post);
           print_r($post->ID);
       endforeach;
   }
}

return new myPlugin($_POST);
如果我在函数中放置查询。php(可能在我没有尝试过的类或函数范围之外),它可以工作。这是我目前的解决方法,但我想将其集成到我的插件中。

1 个回复
最合适的回答,由SO网友:kaiser 整理而成

您的问题是您正在添加return new CLASSNAME( $data ); 在文件的末尾(?)。

您需要在函数内部进行调用,并将fn回调添加到如下挂钩:

// THIS IS ONLY AN EXAMPLE!
function wpse46288_call_the_funk()
{
    return new CLASSNAME( $data );
}
add_action( \'init\', \'wpse46288_call_the_funk\' );

结束

相关推荐