WordPress POST_CONTENT在wp_UPDATE_POST之后在cron中删除

时间:2018-11-26 作者:Kalizi

我正在开发Wordpress插件(与WooCommerce) 从API获取HTML内容,并将其作为Post\\U内容添加到iframe中的WP Post中,方法如下:

kses_remove_filters();
$newData[\'description\'] = str_replace("\\n", "", $newData[\'description\']);
$newData[\'description\'] = str_replace("\\t", "", $newData[\'description\']);
$post = $this->getPostByAPIId($product->api_id);

$id = $post->ID ?? get_post($product->woo_id)->ID;
if (isset($id) && !empty($id)) {
    $this->wpdb->update(
        "{$this->wpdb->prefix}posts",
        [
            \'post_content\'  => \'<iframe class="custom-post" id="custom_product_post_content" src="\' . htmlspecialchars(\'data:text/html,\' . stripslashes(rawurlencode($newData[\'description\']))) . \'" style="display: block;width:100vw; height:100vh; border:none; margin:0; padding:0; overflow:hidden; z-index:999999; min-height:300px!important;"></iframe>\'
        ],
        [
            \'ID\' => $id
        ]
    );
}
kses_init_filters();
即使我把kses_remove_filters(), 当我打开wordpress检查新内容时,我发现post\\u内容是空的。

如果我尝试用xdebug调试插件,我会发现post\\u内容已经更新,但当我刷新wordpress时,post\\u内容就会消失。

启动前的一些项目规范:

我不能只将API嵌入为src,我不想通过javascript获取内容,我使用了iframe 因为我知道wordpress post\\u内容不能像这样嵌入完整的HTML页面:html > head { title } > body { style and various tags }

  • 我不是亲自编写HTML的,我需要通过API嵌入它,请随时提问。提前谢谢。

    编辑:即使我使用wp_update_post([\'ID\' => $id, \'post_content\' => \'...\']) post\\u内容没有更新,我得到的是空内容。

    Edit 2:

    我在开发环境中启用了查询日志,在调试会话期间,我发现“删除”post\\u内容的函数是

    wc_update_product_stock( $postId, $quantity )
    即使我用kses_remove_filters(), 该函数不会改变其行为。是否有任何方法可以在不更改库存数量更新的情况下“改变”这种行为?

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

    使用更新WooCommerce库存数量

    wc_update_product_stock( $postId, $quantity )
    用于删除post\\u内容,因此我将数量更新放在post\\u内容更新之前。

    结束

    相关推荐