【问题标题】: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>

只有当我从命令行摩擦脚本时才会发生这种情况,知道如何解决它。

谢谢

【问题讨论】:

    标签: php html wordpress forms


    【解决方案1】:

    这是因为内置的安全过滤器。由于在内容中存储一些表单数据是不正常的(有短代码),WP 禁止插入一些非文本标签。

    但无论如何,您可以手动启用它。

    kses_remove_filters();    
    $post_id = 1;
    $data = array(
      'ID'           => $post_id,
      'post_content' => $content,
    );      
    wp_update_post($data);
    kses_init_filters();
    

    【讨论】:

      猜你喜欢
      • 2013-07-19
      • 2012-07-27
      • 2013-12-09
      • 2011-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-16
      相关资源
      最近更新 更多