diff --git a/includes/admin/core/class-admin-builder.php b/includes/admin/core/class-admin-builder.php index 1ed73dbc..0a9567eb 100644 --- a/includes/admin/core/class-admin-builder.php +++ b/includes/admin/core/class-admin-builder.php @@ -49,6 +49,12 @@ if ( ! class_exists( 'um\admin\core\Admin_Builder' ) ) { return $errors; } + $blacklist_error = UM()->builtin()->blacklist_field_err( $submission_data['post']['_metakey'] ); + if ( ! empty( $blacklist_error ) ) { + $errors['_metakey'] = $blacklist_error; + return $errors; + } + $field_attr = UM()->builtin()->get_core_field_attrs( $submission_data['field_type'] ); if ( ! array_key_exists( 'validate', $field_attr ) ) { return $errors; diff --git a/includes/core/class-builtin.php b/includes/core/class-builtin.php index d296ac55..ad27a38c 100644 --- a/includes/core/class-builtin.php +++ b/includes/core/class-builtin.php @@ -33,6 +33,11 @@ if ( ! class_exists( 'um\core\Builtin' ) ) { */ public $saved_fields = array(); + /** + * @var array + */ + public $blacklist_fields = array(); + /** * @var array */ @@ -50,6 +55,7 @@ if ( ! class_exists( 'um\core\Builtin' ) ) { add_action( 'init', array( &$this, 'set_core_fields' ), 1 ); add_action( 'init', array( &$this, 'set_predefined_fields' ), 1 ); add_action( 'init', array( &$this, 'set_custom_fields' ), 1 ); + add_action( 'init', array( &$this, 'set_blacklist_fields' ), 1 ); $this->saved_fields = get_option( 'um_fields', array() ); } @@ -149,7 +155,7 @@ if ( ! class_exists( 'um\core\Builtin' ) ) { * * @return int|string */ - function unique_field_err( $key ) { + public function unique_field_err( $key ) { if ( empty( $key ) ) { return __( 'Please provide a meta key', 'ultimate-member' ); } @@ -170,6 +176,22 @@ if ( ! class_exists( 'um\core\Builtin' ) ) { } + /** + * Checks for a blacklist field error + * + * @param $key + * + * @return int|string + */ + public function blacklist_field_err( $key ) { + if ( in_array( strtolower( $key ), UM()->builtin()->blacklist_fields, true ) ) { + return __( 'Your meta key can not be used', 'ultimate-member' ); + } + + return 0; + } + + /** * Check date range errors (start date) * @@ -1355,6 +1377,32 @@ if ( ! class_exists( 'um\core\Builtin' ) ) { } + public function set_blacklist_fields() { + $this->blacklist_fields = array( + 'id', + ); + + /** + * Filters change metakeys in the blacklist. + * + * @since 2.6.12 + * @hook um_blacklist_fields_hook + * + * @param {array} $blacklist_fields array of metakeys in the blacklist. + * + * @return {array} Array of metakeys in the blacklis. + * + * @example Change array of metakeys in the blacklist. + * function my_um_blacklist_fields_hook( $blacklist_fields ) { + * // your code here + * return $blacklist_fields; + * } + * add_filter( 'um_blacklist_fields_hook', 'my_um_blacklist_fields_hook' ); + */ + $this->blacklist_fields = apply_filters( 'um_blacklist_fields_hook', $this->blacklist_fields ); + } + + /** * Custom Fields */