RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1103087
Accepted
Master Wenom
Master Wenom
Asked:2020-03-31 04:22:24 +0000 UTC2020-03-31 04:22:24 +0000 UTC 2020-03-31 04:22:24 +0000 UTC

wordpress 输入字段不接受空值

  • 772

总的来说,问题的本质。我创建了一个带有自定义表格的插件。我创建了一个用于添加/编辑/删除记录的管理面板。通过 WP_List_Table 实现。一切似乎都正常工作,除了一件事:如果在字段中输入零 (0),它不会保存记录。而且,与表单中输入字段的类型和数据库表中的记录类型(int、varchar)无关。谁会告诉你在哪里挖?职业新.php

<div class="wrap">
    <h1><?php _e( 'Add Career', 'wedevs' ); ?></h1>

    <form action="" method="post">

        <table class="form-table">
            <tbody>
            <tr class="row-name">
                <th scope="row">
                    <label for="name"><?php _e( 'Career', 'wedevs' ); ?></label>
                </th>
                <td>
                    <input type="text" name="name" id="name" class="regular-text" placeholder="<?php echo esc_attr( '', 'wedevs' ); ?>" value="" required="required" />
                </td>
            </tr>
            <tr class="row-coordinates">
                <th scope="row">
                    <label for="coordinates"><?php _e( 'Coordinates', 'wedevs' ); ?></label>
                </th>
                <td>
                    <input type="text" name="coordinates" id="coordinates" class="regular-text" placeholder="<?php echo esc_attr( '', 'wedevs' ); ?>" value="" required="required" />
                </td>
            </tr>
            </tbody>
        </table>

        <input type="hidden" name="field_id" value="0">

        <?php wp_nonce_field( 'career-new' ); ?>
        <?php submit_button( __( 'Add Career', 'wedevs' ), 'primary', 'submit_career' ); ?>

    </form>
</div>

表单处理程序.php

<?php

class Form_Career_Handler {

    public function __construct() {
        add_action( 'admin_init', array( $this, 'handle_form' ) );
    }

    public function handle_form() {
        if ( ! isset( $_POST['submit_career'] ) ) {
            return;
        }

        if ( ! wp_verify_nonce( $_POST['_wpnonce'], 'career-new' ) ) {
            die( __( 'Are you cheating?', 'wedevs' ) );
        }

        if ( ! current_user_can( 'read' ) ) {
            wp_die( __( 'Permission Denied!', 'wedevs' ) );
        }

        $errors   = array();
        $page_url = admin_url( 'admin.php?page=career' );
        $field_id = isset( $_POST['field_id'] ) ? intval( $_POST['field_id'] ) : 0;

        $name = isset( $_POST['name'] ) ? sanitize_text_field( $_POST['name'] ) : '';
        $coordinates = isset( $_POST['coordinates'] ) ? sanitize_text_field( $_POST['coordinates'] ) : '';

        if ( ! $name ) {
            $errors[] = __( 'Error: Career is required', 'wedevs' );
        }

        if ( ! $coordinates ) {
            $errors[] = __( 'Error: Coordinates is required', 'wedevs' );
        }

        if ( $errors ) {
            $first_error = reset( $errors );
            $redirect_to = add_query_arg( array( 'error' => $first_error ), $page_url );
            wp_safe_redirect( $redirect_to );
            exit;
        }

        $fields = array(
            'name' => $name,
            'coordinates' => $coordinates,
        );

        if ( ! $field_id ) {

            $insert_id = itmc_insert_career( $fields );

        } else {

            $fields['id'] = $field_id;

            $insert_id = itmc_insert_career( $fields );
        }

        if ( is_wp_error( $insert_id ) ) {
            $redirect_to = add_query_arg( array( 'message' => 'error' ), $page_url );
        } else {
            $redirect_to = add_query_arg( array( 'message' => 'success' ), $page_url );
        }

        wp_safe_redirect( $redirect_to );
        exit;
    }
}

new Form_Career_Handler();

职业功能.php

<?php

function itmc_get_all_career( $args = array() ) {
    global $wpdb;

    $defaults = array(
        'number'     => 20,
        'offset'     => 0,
        'orderby'    => 'id',
        'order'      => 'ASC',
    );

    $args      = wp_parse_args( $args, $defaults );
    $cache_key = 'career-all';
    $items     = wp_cache_get( $cache_key, 'wedevs' );

    if ( false === $items ) {
        $items = $wpdb->get_results( 'SELECT * FROM ' . $wpdb->prefix . 'itm_calc_career ORDER BY ' . $args['orderby'] .' ' . $args['order'] .' LIMIT ' . $args['offset'] . ', ' . $args['number'] );

        wp_cache_set( $cache_key, $items, 'wedevs' );
    }

    return $items;
}

function itmc_get_career_count() {
    global $wpdb;

    return (int) $wpdb->get_var( 'SELECT COUNT(*) FROM ' . $wpdb->prefix . 'itm_calc_career' );
}

function itmc_get_career( $id = 0 ) {
    global $wpdb;

    return $wpdb->get_row( $wpdb->prepare( 'SELECT * FROM ' . $wpdb->prefix . 'itm_calc_career WHERE id = %d', $id ) );
}

function itmc_insert_career( $args = array() ) {
    global $wpdb;

    $defaults = array(
        'id'         => null,
        'name' => '',
        'coordinates' => '',

    );

    $args       = wp_parse_args( $args, $defaults );
    $table_name = $wpdb->prefix . 'itm_calc_career';


    if ( empty( $args['name'] ) ) {
        return new WP_Error( 'no-name', __( 'No Career provided.', 'wedevs' ) );
    }
    if ( empty( $args['coordinates'] ) ) {
        return new WP_Error( 'no-coordinates', __( 'No Coordinates provided.', 'wedevs' ) );
    }


    $row_id = (int) $args['id'];
    unset( $args['id'] );

    if ( ! $row_id ) {



        if ( $wpdb->insert( $table_name, $args ) ) {
            return $wpdb->insert_id;
        }

    } else {

        if ( $wpdb->update( $table_name, $args, array( 'id' => $row_id ) ) ) {
            return $row_id;
        }
    }

    return false;
}
php
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Master Wenom
    2020-03-31T05:08:18Z2020-03-31T05:08:18Z

    所以,谢谢@Krya!更改支票

    is_null 
    

    在文件 career-functions.php

        if ( is_null( $args['coordinates'] )  ) {
            return new WP_Error( 'no-coordinates', __( 'No Coordinates provided.', 'wedevs' ) );
        }
    

    并在 form-handler.php 文件中

            if ( is_null($coordinates) ) {
                $errors[] = __( 'Error: Coordinates is required', 'wedevs' );
            }
    

    一切正常。

    • 0

相关问题

  • mysqli 类的对象无法转换为字符串

  • 您的系统中缺少 ext-http *,您的系统中缺少 ext-mysql_xdevapi *

  • 如何从csv中删除bom?

  • 当我按下 Enter 键时,如何让 PhpStorm 的 Emmet 插件触发,就像 VS Code 一样?

  • 注释在 Symfony5 中不起作用

  • 搜索最近的地理位置点

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何从列表中打印最大元素(str 类型)的长度?

    • 2 个回答
  • Marko Smith

    如何在 PyQT5 中清除 QFrame 的内容

    • 1 个回答
  • Marko Smith

    如何将具有特定字符的字符串拆分为两个不同的列表?

    • 2 个回答
  • Marko Smith

    导航栏活动元素

    • 1 个回答
  • Marko Smith

    是否可以将文本放入数组中?[关闭]

    • 1 个回答
  • Marko Smith

    如何一次用多个分隔符拆分字符串?

    • 1 个回答
  • Marko Smith

    如何通过 ClassPath 创建 InputStream?

    • 2 个回答
  • Marko Smith

    在一个查询中连接多个表

    • 1 个回答
  • Marko Smith

    对列表列表中的所有值求和

    • 3 个回答
  • Marko Smith

    如何对齐 string.Format 中的列?

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5