使用php类在wordpress中维护状态-对象寿命

时间:2018-07-16 13:23:21

标签: php wordpress oop

我从头开始创建了一个html表单,并通过使用Wordpress Shortcode API将其包括在内。该表格是基于用户数据集合的表格。该集合是一个php类。在集合的构造函数中,我尝试使用

注册表单“ post”操作
add_action( 'admin_post_my_form_action' function() {
    handle_post_data();
}

这样声明表单:

<form action="' . esc_url( admin_url('admin-post.php') ) . '" method="post">

,并且具有一个隐藏的“输入”字段,如下所示:

<input type="hidden" name="action" value="my_form_action">

一切都应该很好...

但是,表单处理程序永远不会被调用。

通过将调试添加到__construct()和__destruct()方法中,我看到Collection对象的寿命很短。可以在调用回调之前破坏收集对象。 (这令人惊讶,因为wordpress核心可能具有回调句柄)

我试图通过在全局范围内声明Collection对象以及使用具有静态实例属性的singleton模式来使Collection对象保持活动状态。两种方法都不行。

有没有一种很好的wordpressy方式可以随时保持状态?

感谢期待

附录:当我将add_action钩子放在函数或类的外部时,回调起作用。但是,这不能解决我的问题。我需要Collection对象保持足够长的时间,以便可以在回调中使用它。 -J

1 个答案:

答案 0 :(得分:0)

add_action必须在函数或类之外,因为在WordPress开始处理数据之前需要调用此代码。如果将其放入一个类中,则需要实例化该类并调用包含此代码的函数来注册钩子。

我不确定“集合”是什么意思。表格中的所有数据都可以通过$ _POST变量获得。尝试仅使用var_dump($ _ POST)或print_r($ _ POST)打印所有请求数据,然后看看会得到什么。