admin管理员组文章数量:1130349
I'm developing a Wordpress plugin (integrated with WooCommerce) that fetches HTML Content from an API, and add it to a WP Post as post_content into an iframe, this way:
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();
Even if I put the kses_remove_filters(), when I open wordpress to check the new content, I find out that the post_content is empty.
If I try to debug the plugin with xdebug, I find out that post_content is updated, but when I refresh wordpress, the post_content disappear.
A few project specifications before starting:
- I can't just embed the API as src
- I don't want to fetch content via javascript
- I used an iframe because I know that wordpress post_content can't embed a full HTML page like this:
html > head { title } > body { style and various tags } - I don't write the HTML personally, I need to embed it via the API
Feel free to ask any question. Thanks in advance.
Edit: Even if I use wp_update_post(['ID' => $id, 'post_content' => '...']) the post_content doesn't get updated and I get empty content.
Edit 2:
I enabled query log on my development environment and during debug session I found out that the function that "remove" the post_content is
wc_update_product_stock( $postId, $quantity )
Even if I wrap this function with a kses_remove_filters(), the function doesn't change its behaviour. Is there any way to "change" this behaviour without changing stock quantity update?
I'm developing a Wordpress plugin (integrated with WooCommerce) that fetches HTML Content from an API, and add it to a WP Post as post_content into an iframe, this way:
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();
Even if I put the kses_remove_filters(), when I open wordpress to check the new content, I find out that the post_content is empty.
If I try to debug the plugin with xdebug, I find out that post_content is updated, but when I refresh wordpress, the post_content disappear.
A few project specifications before starting:
- I can't just embed the API as src
- I don't want to fetch content via javascript
- I used an iframe because I know that wordpress post_content can't embed a full HTML page like this:
html > head { title } > body { style and various tags } - I don't write the HTML personally, I need to embed it via the API
Feel free to ask any question. Thanks in advance.
Edit: Even if I use wp_update_post(['ID' => $id, 'post_content' => '...']) the post_content doesn't get updated and I get empty content.
Edit 2:
I enabled query log on my development environment and during debug session I found out that the function that "remove" the post_content is
wc_update_product_stock( $postId, $quantity )
Even if I wrap this function with a kses_remove_filters(), the function doesn't change its behaviour. Is there any way to "change" this behaviour without changing stock quantity update?
1 Answer
Reset to default 0WooCommerce stock quantity update by using
wc_update_product_stock( $postId, $quantity )
used to remove post_content, so I put quantity update before the post_content update.
I'm developing a Wordpress plugin (integrated with WooCommerce) that fetches HTML Content from an API, and add it to a WP Post as post_content into an iframe, this way:
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();
Even if I put the kses_remove_filters(), when I open wordpress to check the new content, I find out that the post_content is empty.
If I try to debug the plugin with xdebug, I find out that post_content is updated, but when I refresh wordpress, the post_content disappear.
A few project specifications before starting:
- I can't just embed the API as src
- I don't want to fetch content via javascript
- I used an iframe because I know that wordpress post_content can't embed a full HTML page like this:
html > head { title } > body { style and various tags } - I don't write the HTML personally, I need to embed it via the API
Feel free to ask any question. Thanks in advance.
Edit: Even if I use wp_update_post(['ID' => $id, 'post_content' => '...']) the post_content doesn't get updated and I get empty content.
Edit 2:
I enabled query log on my development environment and during debug session I found out that the function that "remove" the post_content is
wc_update_product_stock( $postId, $quantity )
Even if I wrap this function with a kses_remove_filters(), the function doesn't change its behaviour. Is there any way to "change" this behaviour without changing stock quantity update?
I'm developing a Wordpress plugin (integrated with WooCommerce) that fetches HTML Content from an API, and add it to a WP Post as post_content into an iframe, this way:
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();
Even if I put the kses_remove_filters(), when I open wordpress to check the new content, I find out that the post_content is empty.
If I try to debug the plugin with xdebug, I find out that post_content is updated, but when I refresh wordpress, the post_content disappear.
A few project specifications before starting:
- I can't just embed the API as src
- I don't want to fetch content via javascript
- I used an iframe because I know that wordpress post_content can't embed a full HTML page like this:
html > head { title } > body { style and various tags } - I don't write the HTML personally, I need to embed it via the API
Feel free to ask any question. Thanks in advance.
Edit: Even if I use wp_update_post(['ID' => $id, 'post_content' => '...']) the post_content doesn't get updated and I get empty content.
Edit 2:
I enabled query log on my development environment and during debug session I found out that the function that "remove" the post_content is
wc_update_product_stock( $postId, $quantity )
Even if I wrap this function with a kses_remove_filters(), the function doesn't change its behaviour. Is there any way to "change" this behaviour without changing stock quantity update?
-
Why are you inserting directly into the database and not using
wp_update_post()? – Jacob Peattie Commented Nov 26, 2018 at 10:30 -
Because
wp_update_post()doesn't update the post_content – Kalizi Commented Nov 26, 2018 at 10:56 - What? Of course it does. – Jacob Peattie Commented Nov 26, 2018 at 10:57
-
I tried to perform
wp_update_post(['ID' => $id, 'post_content' => '...'])but when I refresh the wordpress page, or I select the post_content from the posts table, I get empty post_content. – Kalizi Commented Nov 26, 2018 at 10:59 - Aren't you having the same problem with the version in your question? – Jacob Peattie Commented Nov 26, 2018 at 11:00
1 Answer
Reset to default 0WooCommerce stock quantity update by using
wc_update_product_stock( $postId, $quantity )
used to remove post_content, so I put quantity update before the post_content update.
本文标签: woocommerce offtopicWordpress postcontent gets deleted in cron after wpupdatepost
版权声明:本文标题:woocommerce offtopic - Wordpress post_content gets deleted in cron after wp_update_post 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/questions/1749148162a2323355.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


wp_update_post()? – Jacob Peattie Commented Nov 26, 2018 at 10:30wp_update_post()doesn't update the post_content – Kalizi Commented Nov 26, 2018 at 10:56wp_update_post(['ID' => $id, 'post_content' => '...'])but when I refresh the wordpress page, or I select the post_content from the posts table, I get empty post_content. – Kalizi Commented Nov 26, 2018 at 10:59