Enhancement: Update account creation settings wording (#48556)
* Reword and reorganise existing account settings * Disable account creation options if toggled off * Toggle disabled state of related options * Update settings crud tests * changelog * Hide based on subscriptions checkbox also
This commit is contained in:
parent
fae23f0906
commit
dabc29c04e
|
@ -0,0 +1,4 @@
|
|||
Significance: patch
|
||||
Type: update
|
||||
|
||||
Updated account settings descriptions for added clarity
|
|
@ -5173,6 +5173,10 @@ img.help_tip {
|
|||
float: none;
|
||||
}
|
||||
|
||||
td.disabled {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
margin-top: 4px;
|
||||
|
||||
|
@ -5255,6 +5259,13 @@ img.help_tip {
|
|||
.wc_emails_wrapper {
|
||||
padding: 0 15px 10px 0;
|
||||
}
|
||||
|
||||
legend {
|
||||
font-weight: 700;
|
||||
line-height: 1.4;
|
||||
padding: 5px 0 0;
|
||||
margin: 0 0 8px !important;
|
||||
}
|
||||
}
|
||||
|
||||
.wc-shipping-zone-settings {
|
||||
|
|
|
@ -47,7 +47,7 @@ if ( ! class_exists( 'WC_Admin_Settings', false ) ) :
|
|||
if ( empty( self::$settings ) ) {
|
||||
$settings = array();
|
||||
|
||||
include_once dirname( __FILE__ ) . '/settings/class-wc-settings-page.php';
|
||||
include_once __DIR__ . '/settings/class-wc-settings-page.php';
|
||||
|
||||
$settings[] = include __DIR__ . '/settings/class-wc-settings-general.php';
|
||||
$settings[] = include __DIR__ . '/settings/class-wc-settings-products.php';
|
||||
|
@ -153,7 +153,7 @@ if ( ! class_exists( 'WC_Admin_Settings', false ) ) :
|
|||
// Get tabs for the settings page.
|
||||
$tabs = apply_filters( 'woocommerce_settings_tabs_array', array() );
|
||||
|
||||
include dirname( __FILE__ ) . '/views/html-admin-settings.php';
|
||||
include __DIR__ . '/views/html-admin-settings.php';
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -514,11 +514,19 @@ if ( ! class_exists( 'WC_Admin_Settings', false ) ) :
|
|||
$visibility_class[] = $value['row_class'];
|
||||
}
|
||||
|
||||
$container_class = implode( ' ', $visibility_class );
|
||||
$must_disable = $value['disabled'] ?? false;
|
||||
|
||||
if ( $must_disable ) {
|
||||
$visibility_class[] = 'disabled';
|
||||
}
|
||||
|
||||
$container_class = implode( ' ', $visibility_class );
|
||||
$has_title = isset( $value['title'] ) && '' !== $value['title'];
|
||||
$has_legend = isset( $value['legend'] ) && '' !== $value['legend'];
|
||||
|
||||
if ( ! isset( $value['checkboxgroup'] ) || 'start' === $value['checkboxgroup'] ) {
|
||||
$has_tooltip = isset( $value['tooltip'] ) && '' !== $value['tooltip'];
|
||||
|
||||
$tooltip_container_class = $has_tooltip ? 'with-tooltip' : '';
|
||||
?>
|
||||
<tr class="<?php echo esc_attr( $container_class ); ?>">
|
||||
|
@ -535,9 +543,9 @@ if ( ! class_exists( 'WC_Admin_Settings', false ) ) :
|
|||
<?php
|
||||
}
|
||||
|
||||
if ( ! empty( $value['title'] ) ) {
|
||||
if ( $has_title || $has_legend ) {
|
||||
?>
|
||||
<legend class="screen-reader-text"><span><?php echo esc_html( $value['title'] ); ?></span></legend>
|
||||
<legend class="<?php echo $has_legend ? '' : 'screen-reader-text'; ?>"><span><?php echo esc_html( $has_legend ? $value['legend'] : $value['title'] ); ?></span></legend>
|
||||
<?php
|
||||
}
|
||||
|
||||
|
@ -550,7 +558,6 @@ if ( ! class_exists( 'WC_Admin_Settings', false ) ) :
|
|||
type="checkbox"
|
||||
class="<?php echo esc_attr( isset( $value['class'] ) ? $value['class'] : '' ); ?>"
|
||||
value="1"
|
||||
<?php disabled( $value['disabled'] ?? false ); ?>
|
||||
<?php checked( $option_value, 'yes' ); ?>
|
||||
<?php echo implode( ' ', $custom_attributes ); // WPCS: XSS ok. ?>
|
||||
/> <?php echo $description; // WPCS: XSS ok. ?>
|
||||
|
|
|
@ -50,8 +50,9 @@ class WC_Settings_Accounts extends WC_Settings_Page {
|
|||
'id' => 'account_registration_options',
|
||||
),
|
||||
array(
|
||||
'title' => __( 'Guest checkout', 'woocommerce' ),
|
||||
'desc' => __( 'Allow customers to place orders without an account', 'woocommerce' ),
|
||||
'title' => __( 'Checkout', 'woocommerce' ),
|
||||
'desc' => __( 'Enable guest checkout (recommended)', 'woocommerce' ),
|
||||
'desc_tip' => __( 'Allows customers to checkout without an account.', 'woocommerce' ),
|
||||
'id' => 'woocommerce_enable_guest_checkout',
|
||||
'default' => 'yes',
|
||||
'type' => 'checkbox',
|
||||
|
@ -60,7 +61,7 @@ class WC_Settings_Accounts extends WC_Settings_Page {
|
|||
),
|
||||
array(
|
||||
'title' => __( 'Login', 'woocommerce' ),
|
||||
'desc' => __( 'Allow customers to log into an existing account during checkout', 'woocommerce' ),
|
||||
'desc' => __( 'Enable log-in during checkout', 'woocommerce' ),
|
||||
'id' => 'woocommerce_enable_checkout_login_reminder',
|
||||
'default' => 'no',
|
||||
'type' => 'checkbox',
|
||||
|
@ -69,31 +70,38 @@ class WC_Settings_Accounts extends WC_Settings_Page {
|
|||
),
|
||||
array(
|
||||
'title' => __( 'Account creation', 'woocommerce' ),
|
||||
'desc' => __( 'Allow customers to create an account during checkout', 'woocommerce' ),
|
||||
'desc' => __( 'During checkout', 'woocommerce' ),
|
||||
'desc_tip' => __( 'Customers can create an account before placing their order.', 'woocommerce' ),
|
||||
'id' => 'woocommerce_enable_signup_and_login_from_checkout',
|
||||
'default' => 'no',
|
||||
'type' => 'checkbox',
|
||||
'checkboxgroup' => 'start',
|
||||
'legend' => __( 'Allow customers to create an account:', 'woocommerce' ),
|
||||
'autoload' => false,
|
||||
),
|
||||
array(
|
||||
'title' => __( 'Account creation', 'woocommerce' ),
|
||||
'desc' => __( 'On "My account" page', 'woocommerce' ),
|
||||
'id' => 'woocommerce_enable_myaccount_registration',
|
||||
'default' => 'no',
|
||||
'type' => 'checkbox',
|
||||
'checkboxgroup' => 'end',
|
||||
'autoload' => false,
|
||||
),
|
||||
array(
|
||||
'title' => __( 'Account creation options', 'woocommerce' ),
|
||||
'desc' => __( 'Use email address as account login (recommended)', 'woocommerce' ),
|
||||
'desc_tip' => __( 'If unchecked, customers will need to set a username during account creation.', 'woocommerce' ),
|
||||
'id' => 'woocommerce_registration_generate_username',
|
||||
'default' => 'yes',
|
||||
'type' => 'checkbox',
|
||||
'checkboxgroup' => 'start',
|
||||
'autoload' => false,
|
||||
),
|
||||
array(
|
||||
'desc' => __( 'Allow customers to create an account on the "My account" page', 'woocommerce' ),
|
||||
'id' => 'woocommerce_enable_myaccount_registration',
|
||||
'default' => 'no',
|
||||
'type' => 'checkbox',
|
||||
'checkboxgroup' => '',
|
||||
'autoload' => false,
|
||||
),
|
||||
array(
|
||||
'desc' => __( 'When creating an account, automatically generate an account username for the customer based on their name, surname or email', 'woocommerce' ),
|
||||
'id' => 'woocommerce_registration_generate_username',
|
||||
'default' => 'yes',
|
||||
'type' => 'checkbox',
|
||||
'checkboxgroup' => '',
|
||||
'autoload' => false,
|
||||
),
|
||||
array(
|
||||
'desc' => __( 'When creating an account, send the new user a link to set their password', 'woocommerce' ),
|
||||
'title' => __( 'Account creation options', 'woocommerce' ),
|
||||
'desc' => __( 'Send password setup link (recommended)', 'woocommerce' ),
|
||||
'desc_tip' => __( 'New customers receive an email to set up their password.', 'woocommerce' ),
|
||||
'id' => 'woocommerce_registration_generate_password',
|
||||
'default' => 'yes',
|
||||
'type' => 'checkbox',
|
||||
|
@ -118,7 +126,7 @@ class WC_Settings_Accounts extends WC_Settings_Page {
|
|||
'id' => 'woocommerce_erasure_request_removes_download_data',
|
||||
'type' => 'checkbox',
|
||||
'default' => 'no',
|
||||
'checkboxgroup' => 'end',
|
||||
'checkboxgroup' => '',
|
||||
'autoload' => false,
|
||||
),
|
||||
array(
|
||||
|
@ -127,7 +135,7 @@ class WC_Settings_Accounts extends WC_Settings_Page {
|
|||
'desc_tip' => __( 'Adds an option to the orders screen for removing personal data in bulk. Note that removing personal data cannot be undone.', 'woocommerce' ),
|
||||
'id' => 'woocommerce_allow_bulk_remove_personal_data',
|
||||
'type' => 'checkbox',
|
||||
'checkboxgroup' => 'start',
|
||||
'checkboxgroup' => 'end',
|
||||
'default' => 'no',
|
||||
'autoload' => false,
|
||||
),
|
||||
|
@ -229,10 +237,49 @@ class WC_Settings_Accounts extends WC_Settings_Page {
|
|||
),
|
||||
);
|
||||
|
||||
return apply_filters(
|
||||
'woocommerce_' . $this->id . '_settings',
|
||||
$account_settings
|
||||
);
|
||||
/**
|
||||
* Filter account settings.
|
||||
*
|
||||
* @hook woocommerce_account_settings
|
||||
* @since 3.5.0
|
||||
* @param array $account_settings Account settings.
|
||||
*/
|
||||
return apply_filters( 'woocommerce_' . $this->id . '_settings', $account_settings );
|
||||
}
|
||||
|
||||
/**
|
||||
* Output the HTML for the settings.
|
||||
*/
|
||||
public function output() {
|
||||
parent::output();
|
||||
|
||||
// The following code toggles disabled state on the account options based on other values.
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const checkboxes = [
|
||||
document.getElementById("woocommerce_enable_signup_and_login_from_checkout"),
|
||||
document.getElementById("woocommerce_enable_myaccount_registration"),
|
||||
document.getElementById("woocommerce_enable_signup_from_checkout_for_subscriptions")
|
||||
];
|
||||
const inputs = [
|
||||
document.getElementById("woocommerce_registration_generate_username"),
|
||||
document.getElementById("woocommerce_registration_generate_password")
|
||||
];
|
||||
|
||||
function updateInputs() {
|
||||
const isChecked = checkboxes.some(cb => cb && cb.checked);
|
||||
inputs.forEach(input => {
|
||||
input.disabled = !isChecked;
|
||||
input.closest('td').classList.toggle("disabled", !isChecked);
|
||||
});
|
||||
}
|
||||
|
||||
checkboxes.forEach(cb => cb.addEventListener('change', updateInputs));
|
||||
updateInputs(); // Initial state
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1334,9 +1334,8 @@ test.describe.serial( 'Settings API tests: CRUD', () => {
|
|||
expect.arrayContaining( [
|
||||
expect.objectContaining( {
|
||||
id: 'woocommerce_enable_guest_checkout',
|
||||
label: 'Guest checkout',
|
||||
description:
|
||||
'Allow customers to place orders without an account',
|
||||
label: 'Checkout',
|
||||
description: 'Enable guest checkout (recommended)',
|
||||
type: 'checkbox',
|
||||
default: 'yes',
|
||||
value: 'yes',
|
||||
|
@ -1348,8 +1347,7 @@ test.describe.serial( 'Settings API tests: CRUD', () => {
|
|||
expect.objectContaining( {
|
||||
id: 'woocommerce_enable_checkout_login_reminder',
|
||||
label: 'Login',
|
||||
description:
|
||||
'Allow customers to log into an existing account during checkout',
|
||||
description: 'Enable log-in during checkout',
|
||||
type: 'checkbox',
|
||||
default: 'no',
|
||||
value: 'no',
|
||||
|
@ -1361,8 +1359,7 @@ test.describe.serial( 'Settings API tests: CRUD', () => {
|
|||
expect.objectContaining( {
|
||||
id: 'woocommerce_enable_signup_and_login_from_checkout',
|
||||
label: 'Account creation',
|
||||
description:
|
||||
'Allow customers to create an account during checkout',
|
||||
description: 'During checkout',
|
||||
type: 'checkbox',
|
||||
default: 'no',
|
||||
value: 'no',
|
||||
|
@ -1373,9 +1370,8 @@ test.describe.serial( 'Settings API tests: CRUD', () => {
|
|||
expect.arrayContaining( [
|
||||
expect.objectContaining( {
|
||||
id: 'woocommerce_enable_myaccount_registration',
|
||||
label: '',
|
||||
description:
|
||||
'Allow customers to create an account on the "My account" page',
|
||||
label: 'Account creation',
|
||||
description: 'On "My account" page',
|
||||
type: 'checkbox',
|
||||
default: 'no',
|
||||
value: 'no',
|
||||
|
@ -1386,9 +1382,9 @@ test.describe.serial( 'Settings API tests: CRUD', () => {
|
|||
expect.arrayContaining( [
|
||||
expect.objectContaining( {
|
||||
id: 'woocommerce_registration_generate_username',
|
||||
label: '',
|
||||
label: 'Account creation options',
|
||||
description:
|
||||
'When creating an account, automatically generate an account username for the customer based on their name, surname or email',
|
||||
'Use email address as account login (recommended)',
|
||||
type: 'checkbox',
|
||||
default: 'yes',
|
||||
value: 'yes',
|
||||
|
@ -1399,9 +1395,8 @@ test.describe.serial( 'Settings API tests: CRUD', () => {
|
|||
expect.arrayContaining( [
|
||||
expect.objectContaining( {
|
||||
id: 'woocommerce_registration_generate_password',
|
||||
label: '',
|
||||
description:
|
||||
'When creating an account, send the new user a link to set their password',
|
||||
label: 'Account creation options',
|
||||
description: 'Send password setup link (recommended)',
|
||||
type: 'checkbox',
|
||||
default: 'yes',
|
||||
value: 'yes',
|
||||
|
|
Loading…
Reference in New Issue