diff --git a/includes/core/class-fields.php b/includes/core/class-fields.php
index 3da26800..4ac9e7ab 100644
--- a/includes/core/class-fields.php
+++ b/includes/core/class-fields.php
@@ -3552,47 +3552,50 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
/* Radio */
case 'radio':
- if ( isset( $options ) ) {
- /**
- * Filters extend radio field options.
- *
- * @since 2.0
- * @hook um_radio_field_options
- *
- * @param {array} $options Radio Field Options.
- * @param {array} $data Field Data.
- *
- * @return {array} $options Radio Field Options.
- *
- * @example
Extend radio field options.
- * function my_radio_field_options( $options, $data ) {
- * // your code here
- * return $options;
- * }
- * add_filter( 'um_radio_field_options', 'my_radio_field_options', 10, 2 );
- */
- $options = apply_filters( 'um_radio_field_options', $options, $data );
-
- /**
- * Filters extend radio field options by field $key.
- *
- * @since 2.0
- * @hook um_radio_field_options_{$key}
- *
- * @param {array} $options Radio Field Options.
- *
- * @return {array} $options Radio Field Options.
- *
- * @example Extend radio field options.
- * function my_radio_field_options( $options ) {
- * // your code here
- * return $options;
- * }
- * add_filter( 'um_radio_field_options_{$key}', 'my_radio_field_options', 10, 1 );
- */
- $options = apply_filters( "um_radio_field_options_{$key}", $options );
+ $options = array();
+ if ( isset( $data['options'] ) && is_array( $data['options'] ) ) {
+ $options = $data['options'];
}
+ /**
+ * Filters extend radio field options.
+ *
+ * @since 2.0
+ * @hook um_radio_field_options
+ *
+ * @param {array} $options Radio Field Options.
+ * @param {array} $data Field Data.
+ *
+ * @return {array} $options Radio Field Options.
+ *
+ * @example Extend radio field options.
+ * function my_radio_field_options( $options, $data ) {
+ * // your code here
+ * return $options;
+ * }
+ * add_filter( 'um_radio_field_options', 'my_radio_field_options', 10, 2 );
+ */
+ $options = apply_filters( 'um_radio_field_options', $options, $data );
+
+ /**
+ * Filters extend radio field options by field $key.
+ *
+ * @since 2.0
+ * @hook um_radio_field_options_{$key}
+ *
+ * @param {array} $options Radio Field Options.
+ *
+ * @return {array} $options Radio Field Options.
+ *
+ * @example Extend radio field options.
+ * function my_radio_field_options( $options ) {
+ * // your code here
+ * return $options;
+ * }
+ * add_filter( 'um_radio_field_options_{$key}', 'my_radio_field_options', 10, 1 );
+ */
+ $options = apply_filters( "um_radio_field_options_{$key}", $options );
+
$output .= 'get_atts( $key, $classes, $data['conditional'], $data ) . '>';
if ( isset( $data['label'] ) ) {
@@ -3920,7 +3923,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
* @return array
*/
function get_available_roles( $form_key, $options = array() ) {
- if ( $form_key != 'role' ) {
+ if ( 'role' !== $form_key ) {
return $options;
}
diff --git a/includes/core/class-shortcodes.php b/includes/core/class-shortcodes.php
index 236192ae..06bd3b30 100644
--- a/includes/core/class-shortcodes.php
+++ b/includes/core/class-shortcodes.php
@@ -582,7 +582,6 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) {
}
}
-
/**
* Shortcode
*
@@ -590,11 +589,10 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) {
*
* @return string
*/
- function ultimatemember( $args = array() ) {
+ public function ultimatemember( $args = array() ) {
return $this->load( $args );
}
-
/**
* Load a module with global function
*
@@ -606,15 +604,15 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) {
$defaults = array();
$args = wp_parse_args( $args, $defaults );
- // when to not continue
- $this->form_id = isset( $args['form_id'] ) ? $args['form_id'] : null;
- if ( ! $this->form_id ) {
- return;
+ // When to not continue.
+ if ( ! array_key_exists( 'form_id', $args ) ) {
+ return '';
}
+ $this->form_id = $args['form_id'];
$this->form_status = get_post_status( $this->form_id );
if ( 'publish' !== $this->form_status ) {
- return;
+ return '';
}
// get data into one global array
@@ -624,21 +622,21 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) {
ob_start();
/**
- * Filters change arguments on load shortcode
+ * Filters arguments for loading Ultimate Member shortcodes.
*
- * @since 2.0
+ * @since 1.3.x
* @hook um_pre_args_setup
*
- * @param {array} $post_data $_POST data.
+ * @param {array} $args Data for loading shortcode.
*
- * @return {array} $post_data data.
+ * @return {array} Data for loading shortcode.
*
* @example
Change arguments on load shortcode.
- * function my_pre_args_setup( $post_data ) {
+ * function my_pre_args_setup( $args ) {
* // your code here
- * return $post_data;
+ * return $args;
* }
- * add_filter( 'um_pre_args_setup', 'my_pre_args_setup', 10, 1 );
+ * add_filter( 'um_pre_args_setup', 'my_pre_args_setup' );
*/
$args = apply_filters( 'um_pre_args_setup', $args );
@@ -676,82 +674,93 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) {
$args = array_merge( $this->get_css_args( $args ), $args );
}
}
- // filter for arguments
/**
- * Filters change arguments on load shortcode
+ * Filters change arguments on load shortcode.
*
- * @since 2.0
+ * @since 1.3.x
* @hook um_shortcode_args_filter
*
- * @param {array} $post_data Shortcode arguments.
+ * @param {array} $args Shortcode arguments.
*
- * @return {array} $post_data Shortcode arguments.
+ * @return {array} Shortcode arguments.
*
* @example Change arguments on load shortcode.
* function my_shortcode_args( $args ) {
* // your code here
* return $args;
* }
- * add_filter( 'um_shortcode_args_filter', 'my_shortcode_args', 10, 1 );
+ * add_filter( 'um_shortcode_args_filter', 'my_shortcode_args' );
*/
$args = apply_filters( 'um_shortcode_args_filter', $args );
if ( ! array_key_exists( 'mode', $args ) || ! array_key_exists( 'template', $args ) ) {
- return;
+ ob_get_clean();
+ return '';
}
$mode = $args['mode'];
- //not display on admin preview
+ // Not display on admin preview.
if ( empty( $_POST['act_id'] ) || 'um_admin_preview_form' !== sanitize_key( $_POST['act_id'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification
-
+ /**
+ * Filters the ability to show registration form for the logged-in users.
+ * Set it to true for displaying registration form for the logged-in users.
+ *
+ * @since 2.1.20
+ * @hook um_registration_for_loggedin_users
+ *
+ * @param {bool} $show Show registration form for the logged-in users. By default, it's false
+ * @param {array} $args Shortcode arguments.
+ *
+ * @return {bool} Show registration form for the logged-in users.
+ *
+ * @example Show registration form for the logged-in users for all UM registration forms on your website.
+ * add_filter( 'um_registration_for_loggedin_users', '__return_true' );
+ */
$enable_loggedin_registration = apply_filters( 'um_registration_for_loggedin_users', false, $args );
- if ( 'register' === $mode && is_user_logged_in() && ! $enable_loggedin_registration ) {
+ if ( ! $enable_loggedin_registration && 'register' === $mode && is_user_logged_in() ) {
ob_get_clean();
- return __( 'You are already registered', 'ultimate-member' );
+ return __( 'You are already registered.', 'ultimate-member' );
}
}
- if ( ! is_user_logged_in() && isset( $args['is_block'] ) && 1 === (int) $args['is_block'] && 'profile' === $mode ) {
- return;
+ if ( isset( $args['is_block'] ) && 1 === (int) $args['is_block'] && 'profile' === $mode && ! is_user_logged_in() ) {
+ ob_get_clean();
+ return '';
}
- // for profiles only
+ // For profiles only.
if ( 'profile' === $mode && um_profile_id() ) {
-
- //set requested user if it's not setup from permalinks (for not profile page in edit mode)
+ // Set requested user if it's not setup from permalinks (for not profile page in edit mode).
if ( ! um_get_requested_user() ) {
um_set_requested_user( um_profile_id() );
}
- if ( ! empty( $args['use_custom_settings'] ) ) { // Option "Apply custom settings to this form"
- if ( ! empty( $args['role'] ) ) { // Option "Make this profile form role-specific"
+ if ( ! empty( $args['use_custom_settings'] ) && ! empty( $args['role'] ) ) {
+ // Option "Apply custom settings to this form". Option "Make this profile form role-specific".
+ // Show the first Profile Form with role selected, don't show profile forms below the page with other role-specific setting.
+ if ( empty( $this->profile_role ) ) {
+ $current_user_roles = UM()->roles()->get_all_user_roles( um_profile_id() );
- // show the first Profile Form with role selected, don't show profile forms below the page with other role-specific setting
- if ( empty( $this->profile_role ) ) {
- $current_user_roles = UM()->roles()->get_all_user_roles( um_profile_id() );
-
- if ( empty( $current_user_roles ) ) {
- ob_get_clean();
- return '';
- } elseif ( is_array( $args['role'] ) ) {
- if ( ! count( array_intersect( $args['role'], $current_user_roles ) ) ) {
- ob_get_clean();
- return '';
- }
- } else {
- if ( ! in_array( $args['role'], $current_user_roles ) ) {
- ob_get_clean();
- return '';
- }
- }
-
- $this->profile_role = $args['role'];
- } elseif ( $this->profile_role !== $args['role'] ) {
+ if ( empty( $current_user_roles ) ) {
ob_get_clean();
return '';
}
+ if ( is_array( $args['role'] ) ) {
+ if ( ! count( array_intersect( $args['role'], $current_user_roles ) ) ) {
+ ob_get_clean();
+ return '';
+ }
+ } elseif ( ! in_array( $args['role'], $current_user_roles, true ) ) {
+ ob_get_clean();
+ return '';
+ }
+
+ $this->profile_role = $args['role'];
+ } elseif ( $this->profile_role !== $args['role'] ) {
+ ob_get_clean();
+ return '';
}
}
}
@@ -833,7 +842,7 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) {
* @since 2.0
* @hook um_after_everything_output
*
- * @param {array} $args Form shortcode pre-loading.
+ * @param {array} $args Form shortcode arguments.
*
* @example Make any custom action after load shortcode content.
* function my_pre_shortcode() {