【问题标题】:wp_kses missing two arguments issuewp_kses 缺少两个参数问题
【发布时间】:2017-01-06 10:37:36
【问题描述】:

在迁移到新的 AWS 实例并从 apache 迁移到 nginx 后,我遇到了 wp_kses 问题,这是我以前没有的问题。

表单提交并且所有处理都顺利进行,但我没有重定向到成功页面,而是收到如下错误消息:

警告:wp_kses() 缺少参数 2,在第 20 行的 path/to/a/file.php 中调用,并在第 521 行的 root/folder/public_html/wp-includes/kses.php 中定义

这是我处理表单的代码

//Template Name: Jobs: Add mini ad form process

if (!wp_verify_nonce( $_POST['ad_mini_add_nonce'], 'submit_add_mini_ad_form' )) :

    echo 'Sorry your nonce didn\'t verify';
    exit;

endif;

    // Checking for secret filed
    if (isset($_POST["secret_field"]) && !empty($_POST["secret_field"])) :

        echo 'Sorry, could not send.';
        exit;

    endif;

        // process form data
        $position_name          = wp_kses($_POST['position_name']);
        $company_name           = wp_kses($_POST['company_name']);
        $location               = wp_kses($_POST['location']);
        $link_for_apply         = wp_kses($_POST['link_for_apply']);
        $website                = wp_kses($_POST['website']);
        $name                   = wp_kses($_POST['name']);
        $email                  = wp_kses($_POST['email']);
        $phone                  = wp_kses($_POST['phone']);


        // Create new add - privately published
        $new_ad = array(
          'post_title'      => $position_name,
          'post_type'       => 'post',
          'post_status'     => 'private',
          'post_author'     => 1001189, //Tanja Mladenovic
        );
        $new_ad_id  = wp_insert_post($new_ad);
        $new_ad_url = get_post_permalink($new_ad_id);
        $next_month         = date( 'Ymd', strtotime('+30 days', time()) );
        // Fill custom fileds
        add_post_meta($new_ad_id, 'company_location', $location);
        add_post_meta($new_ad_id, 'ad_type', 'mini');
        add_post_meta($new_ad_id, 'company_name', $company_name);
        add_post_meta($new_ad_id, 'webiste', $webiste);
        add_post_meta($new_ad_id, 'expire', $next_month);
        add_post_meta($new_ad_id, 'contact_person_name', $name);
        add_post_meta($new_ad_id, 'contact_person_phone', $phone);
        add_post_meta($new_ad_id, 'contact_person_email', $email);
        add_post_meta($new_ad_id, 'type_of_apply', 'link');
        add_post_meta($new_ad_id, 'link_for_apply', $link);

我知道 wp_kses 可以再有两个参数,但之前一切正常,没有问题。官方文档说 wp_kses 第二个参数 'allowed_html' 的默认值为 none (这正是我想要的),第三个参数 'allowed_protocols ' 是可选的

【问题讨论】:

    标签: wordpress apache nginx arguments wordpress-theming


    【解决方案1】:

    好的,我意识到了问题所在。这是WordPress更新。在这个较新的版本中,wp_kses 必须有第二个参数。我的情况,我不想允许 html,所以我添加了空数组,它可以工作

    所以我改变了这部分:

    $position_name          = wp_kses($_POST['position_name']);
    $company_name           = wp_kses($_POST['company_name']);
    $location               = wp_kses($_POST['location']);
    $link_for_apply         = wp_kses($_POST['link_for_apply']);
    $website                = wp_kses($_POST['website']);
    $name                   = wp_kses($_POST['name']);
    $email                  = wp_kses($_POST['email']);
    $phone                  = wp_kses($_POST['phone']);
    

    到这里:

    $position_name          = wp_kses($_POST['position_name'], array());
    $company_name           = wp_kses($_POST['company_name'], array());
    $location               = wp_kses($_POST['location'], array());
    $link_for_apply         = wp_kses($_POST['link_for_apply'], array());
    $website                = wp_kses($_POST['website'], array());
    $name                   = wp_kses($_POST['name'], array());
    $email                  = wp_kses($_POST['email'], array());
    $phone                  = wp_kses($_POST['phone'], array());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      • 2021-08-23
      • 2019-05-25
      • 2022-01-05
      相关资源
      最近更新 更多