我正在开发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()
, 该函数不会改变其行为。是否有任何方法可以在不更改库存数量更新的情况下“改变”这种行为?