自定义明信片内容元数据

时间:2017-03-08 作者:felixlinker

在一个插件中,我创建了一个自定义的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])
            ]);
        }
    }
    .
    .
}
我知道当前状态下存在安全问题。让我们忽略它们,直到主要功能得到修复。

提前感谢!

1 个回复
最合适的回答,由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\'] );

相关推荐

保存Metabox内容无效

我正在尝试保存一个metabox输入,但它似乎不起作用。我使用的是数组(因为我需要我的metabox有60行),所以我假设问题就出在数组中。这是我为管理员提供的metabox函数(它可以正确显示我要显示的信息):function mock_metabox() { global $post; // Nonce field wp_nonce_field( basename( __FILE__ ), \'mock_fields\' ); // in