我使用$ _SESSION变量将一个WP对象数组(即WP_User)从Wordpress站点传递到弹出窗口。
当弹出窗口打开时,我var_dump($_SESSION['variable']['WP_Users'])
,一切看起来都不错。
但是,当我尝试访问$_SESSION['variable']['WP_users'][0]->data->parameter
时,所有值都为NULL。
除此之外,error_log说:
" main():脚本尝试执行方法或访问不完整对象的属性。请确保课程定义" WP_User"您正在尝试操作的对象是在 unserialize()被调用之前加载的,或者提供__autoload()函数来加载/ABSPATH中的类定义 /popup_template.php第52行"
据我所知,我的弹出窗口没有WP类的定义,例如WP_User等,因此我无法操作WP对象。
关于如何解决这个问题的任何想法? (请记住,我根本没有使用(un)serialize())
答案 0 :(得分:0)
所以解决方案实际上非常简单:我必须做error_log
问的问题。
在父窗口中,我必须序列化Wordpress对象的数组,然后将它们推入SESSION var,如下所示:
$_SESSION['variable'] = serialize( $array_of_WP_objects );
在我的弹出模板中,我必须从wp_includes文件夹中添加WP_User
的定义,然后将我的数组反序列化为$array_of_WP_objects
,如此
require_once( '../../../../wp-includes/class-wp-user.php' );
$array_of_WP_objects = unserialize( $_SESSION['variable'] );
像魅力一样工作。