feat: add configurable role for Mahak-created users
Build plugin release / release (push) Successful in 5s
Build plugin release / release (push) Successful in 5s
This commit is contained in:
@@ -14,6 +14,9 @@ class SettingsPageFormController extends InvocableController
|
||||
return (int) filter_var($value, FILTER_VALIDATE_BOOLEAN);
|
||||
};
|
||||
$args['default'] = 0;
|
||||
} elseif ($configured === 'new-user-role') {
|
||||
$args['sanitize_callback'] = fn ($value): string => $this->sanitize_new_user_role($value);
|
||||
$args['default'] = 'wordpress_default';
|
||||
}
|
||||
|
||||
register_setting(config('mahak.settings-group'), $options_key, $args);
|
||||
@@ -58,6 +61,14 @@ class SettingsPageFormController extends InvocableController
|
||||
config('mahak.section-id')
|
||||
);
|
||||
|
||||
add_settings_field(
|
||||
config('mahak.options.new-user-role'),
|
||||
config('mahak.translations.new-user-role'),
|
||||
fn () => $this->new_user_role(),
|
||||
config('mahak.settings-page'),
|
||||
config('mahak.section-id')
|
||||
);
|
||||
|
||||
add_settings_field(
|
||||
config('mahak.options.debug-mode'),
|
||||
config('mahak.translations.debug-mode'),
|
||||
@@ -130,4 +141,54 @@ class SettingsPageFormController extends InvocableController
|
||||
echo "<label><input type='checkbox' name='".esc_attr($name)."' value='1' ".checked($enabled, true, false).' /> ';
|
||||
echo esc_html(config('mahak.translations.debug-mode-description')).'</label>';
|
||||
}
|
||||
|
||||
public function new_user_role(): void
|
||||
{
|
||||
$name = config('mahak.options.new-user-role');
|
||||
$value = sanitize_key((string) get_option($name, 'wordpress_default'));
|
||||
$roles = wp_roles()->get_names();
|
||||
|
||||
if ($value !== 'wordpress_default' && !isset($roles[$value])) {
|
||||
$value = 'wordpress_default';
|
||||
}
|
||||
|
||||
echo "<select name='".esc_attr($name)."'>";
|
||||
$defaultRole = sanitize_key((string) get_option('default_role', 'subscriber'));
|
||||
$defaultRoleLabel = $roles[$defaultRole] ?? $defaultRole;
|
||||
$translatedDefaultRole = function_exists('translate_user_role')
|
||||
? translate_user_role($defaultRoleLabel)
|
||||
: $defaultRoleLabel;
|
||||
echo "<option value='wordpress_default' ".selected($value, 'wordpress_default', false).'>';
|
||||
echo esc_html(config('mahak.translations.wordpress-default-role').' — '.$translatedDefaultRole).'</option>';
|
||||
|
||||
foreach ($roles as $role => $label) {
|
||||
$translatedLabel = function_exists('translate_user_role') ? translate_user_role($label) : $label;
|
||||
echo "<option value='".esc_attr($role)."' ".selected($value, $role, false).'>';
|
||||
echo esc_html($translatedLabel).'</option>';
|
||||
}
|
||||
|
||||
echo '</select>';
|
||||
echo '<p class="description">'.esc_html(config('mahak.translations.new-user-role-description')).'</p>';
|
||||
}
|
||||
|
||||
public function sanitize_new_user_role($value): string
|
||||
{
|
||||
$role = sanitize_key((string) $value);
|
||||
|
||||
if ($role === 'wordpress_default') {
|
||||
return $role;
|
||||
}
|
||||
|
||||
if (get_role($role) !== null) {
|
||||
return $role;
|
||||
}
|
||||
|
||||
add_settings_error(
|
||||
config('mahak.options.new-user-role'),
|
||||
'mahak_invalid_new_user_role',
|
||||
'نقش انتخابشده معتبر نیست. نقش پیشفرض وردپرس استفاده شد.'
|
||||
);
|
||||
|
||||
return 'wordpress_default';
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user