为啥 Wordpress wp_update_post 函数会删除 html 表单标签?
Posted
技术标签:
【中文标题】为啥 Wordpress wp_update_post 函数会删除 html 表单标签?【英文标题】:Why Wordpress wp_update_post function removes html form tags?为什么 Wordpress wp_update_post 函数会删除 html 表单标签? 【发布时间】:2018-05-24 14:04:25 【问题描述】:我正在尝试使用外部 php 文件将带有隐藏输入的表单添加到帖子内容中。
当我从浏览器尝试时,表单添加成功,但是当我从命令行尝试时,表单输入被删除。
这是我的代码:
require('../wp-load.php');
$content = '<div class="buy-preowned">
<form accept-charset="UTF-8" action="https://www.tesla.com//order?redirect=no" id="tesla-cpo-marketing-buy-form" method="post">
<div>
<input name="CPOvehicle" type="text" value="1"/>
<input name="VIN" type="hidden" value="5YJSA1E1XHF210809"/>
<input name="vehicleMapId" type="hidden" value="1280359"/>
<input name="titleStatus" type="hidden" value="NEW"/>
<input name="form_id" type="hidden" value="tesla_cpo_marketing_buy_form"/>
</div>
</form>
<p class="small-text">
Requires a $2,500 deposit
</p>
</div>
';
$post_id = 1;
$data = array(
'ID' => $post_id,
'post_content' => $content,
);
当我检查数据库时,表单存储为:
<form accept-charset="UTF-8" action="https://www.tesla.com//order?redirect=no" id="tesla-cpo-marketing-buy-form" method="post">
<div>
</div>
</form>
只有当我从命令行摩擦脚本时才会发生这种情况,知道如何解决它。
谢谢
【问题讨论】:
【参考方案1】:这是因为内置的安全过滤器。由于在内容中存储一些表单数据是不正常的(有短代码),WP 禁止插入一些非文本标签。
但无论如何,您可以手动启用它。
kses_remove_filters();
$post_id = 1;
$data = array(
'ID' => $post_id,
'post_content' => $content,
);
wp_update_post($data);
kses_init_filters();
【讨论】:
以上是关于为啥 Wordpress wp_update_post 函数会删除 html 表单标签?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 jQuery 不能在 WordPress 页面上运行?