在一个插件中,我创建了一个自定义的post类型,它将表示模型的xml存储在各个post的内容中。
我还创建了一个自定义元框,允许用户使用图形建模器编辑xml。更改后的xml存储在隐藏字段的值中。
当用户单击“保存草稿”或“发布”时,我想将此值保存为帖子的内容。通过使用save_post
操作内容被保存,但我被重定向到一个死页ERR_CONNECTION_RESET
在很长时间加载后,单击“保存草稿”。
这是我的save_post
措施:
class MetaBoxes
{
.
.
public function saveModel($postId, $post, $update)
{
if (get_post($postId)->post_type != $this->post_type)
{
return;
}
if (array_key_exists(self::INPUT_ID, $_POST))
{
wp_update_post([
\'ID\' => $postId,
\'post_content\' => urldecode($_POST[self::INPUT_ID])
]);
}
}
.
.
}
我知道当前状态下存在安全问题。让我们忽略它们,直到主要功能得到修复。
提前感谢!
最合适的回答,由SO网友:Ben Casey 整理而成
我认为您可能处于递归循环中。如果你沉迷于save_post
当您调用wp\\u update\\u post时,将再次触发该消息。
您可以暂时移除挂钩。不知道下面的代码是如何编写钩子的只是猜测。
remove_action( \'save_post\', [ $this, \'saveModel\'] );
wp_update_post([
\'ID\' => $postId,
\'post_content\' => urldecode($_POST[self::INPUT_ID])
]);
add_action( \'save_post\', [ $this, \'saveModel\'] );