Skip to content

Commit 2609d95

Browse files
authored
Newsletter: Enable wp-admin newsletter settings by default (#47750)
Change the jetpack_wp_admin_newsletter_settings_enabled filter default from false to true across all packages, and make the jetpack-mu-wpcom filter callback return true unconditionally. Defer the expose_to_users() check in Settings::init_hooks() so that filters registered after init() are evaluated at the right time. The recently added `SettingsNavTabs` component was missing the `isWpAdminNewsletterSettingsEnabled` check that the older `NavigationSettings` component had, causing the Newsletter tab to show even when the new settings page is active.
1 parent ad8115d commit 2609d95

12 files changed

Lines changed: 45 additions & 26 deletions

File tree

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Significance: patch
2+
Type: changed
3+
4+
Enable wp-admin newsletter settings for all wpcom sites instead of gating behind the newsletter-package-202603 sticker.

projects/packages/jetpack-mu-wpcom/src/features/wpcom-admin-menu/wpcom-admin-menu.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ function () {
352352
// by the newsletter package's Settings::add_wp_admin_menu() for Atomic sites.
353353
// Otherwise, link to Calypso for atomic Personal/Premium sites.
354354
/** This filter is documented in projects/packages/newsletter/src/class-settings.php */
355-
if ( ! apply_filters( 'jetpack_wp_admin_newsletter_settings_enabled', false ) ) {
355+
if ( ! apply_filters( 'jetpack_wp_admin_newsletter_settings_enabled', true ) ) {
356356
add_submenu_page(
357357
'jetpack',
358358
esc_attr__( 'Newsletter', 'jetpack-mu-wpcom' ),
@@ -429,7 +429,7 @@ function () {
429429
if ( $is_simple_site ) {
430430
// Jetpack > Newsletter.
431431
/** This filter is documented in projects/packages/newsletter/src/class-settings.php */
432-
if ( apply_filters( 'jetpack_wp_admin_newsletter_settings_enabled', false ) ) {
432+
if ( apply_filters( 'jetpack_wp_admin_newsletter_settings_enabled', true ) ) {
433433
// Register the in-admin Newsletter settings page (with its own render callback
434434
// and admin hooks). This must be done here (at priority 999999) because the
435435
// Jetpack menu is created by this function and doesn't exist at earlier priorities.

projects/packages/jetpack-mu-wpcom/src/utils.php

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -215,18 +215,15 @@ function wpcom_has_blog_sticker( $blog_sticker, $blog_id ) {
215215
}
216216

217217
/**
218-
* Enable the newsletter settings package for sites with the newsletter-package-202603 sticker.
218+
* Enable the newsletter settings package for all wpcom sites.
219219
*
220-
* This allows opt-in testing of the newsletter settings package on wpcom infrastructure.
220+
* Previously gated by the newsletter-package-202603 sticker for opt-in testing.
221+
* Now enabled unconditionally. This function and its add_filter hook can be
222+
* removed once the filter itself is cleaned up.
221223
*
222224
* @param bool $enabled Whether the newsletter settings are enabled.
223225
* @return bool
224226
*/
225-
function wpcom_maybe_enable_newsletter_settings( $enabled ) {
226-
if ( $enabled ) {
227-
return $enabled;
228-
}
229-
230-
// Stickered sites (will always be simple, as we don't sync this sticker. WoW sites can just add their own mu-plugin/snippet)
231-
return function_exists( 'has_blog_sticker' ) && has_blog_sticker( 'newsletter-package-202603' );
227+
function wpcom_maybe_enable_newsletter_settings( $enabled ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
228+
return true;
232229
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Significance: patch
2+
Type: changed
3+
4+
Update Newsletter manage URL to default to new wp-admin settings page.

projects/packages/my-jetpack/src/products/class-newsletter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ public static function is_plugin_installed() {
177177
* @return ?string
178178
*/
179179
public static function get_manage_url() {
180-
if ( apply_filters( 'jetpack_wp_admin_newsletter_settings_enabled', false ) ) {
180+
if ( apply_filters( 'jetpack_wp_admin_newsletter_settings_enabled', true ) ) {
181181
return admin_url( 'admin.php?page=jetpack-newsletter' );
182182
}
183183
return admin_url( 'admin.php?page=jetpack#/newsletter' );

projects/packages/newsletter/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,16 @@ Reader_Link::init();
2222

2323
## Settings page
2424

25-
The settings page is gated behind the `jetpack_wp_admin_newsletter_settings_enabled` filter (defaults to `false`). When enabled, it registers a `Jetpack > Newsletter` submenu page in wp-admin with a React-based settings UI.
25+
The settings page is controlled by the `jetpack_wp_admin_newsletter_settings_enabled` filter (defaults to `true`). It registers a `Jetpack > Newsletter` submenu page in wp-admin with a React-based settings UI.
2626

2727
### Filters
2828

2929
#### `jetpack_wp_admin_newsletter_settings_enabled`
3030

31-
A temporary filter used during development of this package. When `true`, the new wp-admin newsletter settings page is used. When `false` (default), the existing settings pages are used instead (Calypso on WoA/Simple sites, the Jetpack Settings `#/newsletter` tab on standalone Jetpack sites). This filter will be removed once the new settings page is ready for general use.
31+
Controls whether the new wp-admin newsletter settings page is used. Defaults to `true`. When `false`, the existing settings pages are used instead (Calypso on WoA/Simple sites, the Jetpack Settings `#/newsletter` tab on standalone Jetpack sites). This filter will be removed in a future release.
3232

3333
```php
34-
add_filter( 'jetpack_wp_admin_newsletter_settings_enabled', '__return_true' );
34+
add_filter( 'jetpack_wp_admin_newsletter_settings_enabled', '__return_false' );
3535
```
3636

3737
#### `jetpack_show_newsletter_menu_item`
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Significance: patch
2+
Type: changed
3+
4+
Enable wp-admin newsletter settings by default by changing the jetpack_wp_admin_newsletter_settings_enabled filter default to true. Defer the expose_to_users() check in init_hooks() to avoid timing issues with late-registered filters.

projects/packages/newsletter/src/class-settings.php

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ private function expose_to_users() {
5050
*
5151
* @since 15.3.0
5252
*
53-
* @param bool $enabled Whether to enable the new newsletter settings UI. Default false.
53+
* @param bool $enabled Whether to enable the new newsletter settings UI. Default true.
5454
*/
55-
return apply_filters( 'jetpack_wp_admin_newsletter_settings_enabled', false );
55+
return apply_filters( 'jetpack_wp_admin_newsletter_settings_enabled', true );
5656
}
5757

5858
/**
@@ -94,15 +94,16 @@ public function init_hooks() {
9494
add_action( 'admin_init', array( $this, 'add_reading_page_notice' ) );
9595
}
9696

97-
if ( ! $this->expose_to_users() ) {
98-
return;
99-
}
100-
10197
// Hijack the config URLs to point to our settings page.
10298
// Priority 20 to override the default URL set in subscriptions.php.
99+
// Check expose_to_users() lazily in the callback so filters registered
100+
// after init() (e.g. by jetpack-mu-wpcom) are available.
103101
add_filter(
104102
'jetpack_module_configuration_url_subscriptions',
105-
function () {
103+
function ( $url ) {
104+
if ( ! $this->expose_to_users() ) {
105+
return $url;
106+
}
106107
return Urls::get_newsletter_settings_url( ( new Status() )->get_site_suffix() );
107108
},
108109
20
@@ -118,6 +119,8 @@ function () {
118119
}
119120

120121
// Add admin menu item.
122+
// The expose_to_users() check is deferred to add_wp_admin_menu() so that
123+
// filters registered after init() are available when admin_menu fires.
121124
// Use priority 999 to ensure menu items are queued BEFORE Admin_Menu::admin_menu_hook_callback
122125
// runs at priority 1000 to process all queued items.
123126
add_action( 'admin_menu', array( $this, 'add_wp_admin_menu' ), 999 );

projects/packages/newsletter/src/class-urls.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ public static function get_newsletter_settings_url( $site_slug = null, $relative
3535
*
3636
* @since 0.6.0
3737
*
38-
* @param bool $enabled Whether the new settings UI is enabled. Default false.
38+
* @param bool $enabled Whether the new settings UI is enabled. Default true.
3939
*/
40-
if ( apply_filters( 'jetpack_wp_admin_newsletter_settings_enabled', false ) ) {
40+
if ( apply_filters( 'jetpack_wp_admin_newsletter_settings_enabled', true ) ) {
4141
return admin_url( 'admin.php?page=jetpack-newsletter' );
4242
}
4343

projects/plugins/jetpack/_inc/client/components/settings-nav-tabs/index.jsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
userCanManageModules as _userCanManageModules,
1212
userIsSubscriber as _userIsSubscriber,
1313
userCanPublish,
14+
isWpAdminNewsletterSettingsEnabled as _isWpAdminNewsletterSettingsEnabled,
1415
} from 'state/initial-state';
1516
import {
1617
hasAnyOfTheseModules,
@@ -65,6 +66,7 @@ const SettingsNavTabs = props => {
6566
hasPerformanceFeature,
6667
hasModules,
6768
isModuleActive,
69+
isWpAdminNewsletterSettingsEnabled,
6870
searchTerm,
6971
searchForTerm,
7072
} = props;
@@ -156,7 +158,7 @@ const SettingsNavTabs = props => {
156158
onClick={ () => trackNavClick( 'traffic' ) }
157159
/>
158160
) }
159-
{ hasModules( [ 'subscriptions' ] ) && (
161+
{ hasModules( [ 'subscriptions' ] ) && ! isWpAdminNewsletterSettingsEnabled && (
160162
<Tab
161163
to="/newsletter"
162164
label={ TAB_LABELS[ '/newsletter' ] }
@@ -267,6 +269,7 @@ export default connect(
267269
hasPerformanceFeature: hasAnyPerformanceFeature( state ),
268270
hasModules: modules => hasAnyOfTheseModules( state, modules ),
269271
isModuleActive: module => isModuleActivated( state, module ),
272+
isWpAdminNewsletterSettingsEnabled: _isWpAdminNewsletterSettingsEnabled( state ),
270273
searchTerm: getSearchTerm( state ),
271274
} ),
272275
dispatch => ( {

0 commit comments

Comments
 (0)