WordPress.org

Make WordPress Core

Opened 4 years ago

Last modified 7 months ago

#19272 assigned enhancement

Add Filter to Nav Menu Support Themes Text

Reported by: wpsmith Owned by: DrewAPicture
Milestone: Future Release Priority: normal
Severity: trivial Version:
Component: Menus Keywords: good-first-bug has-patch needs-docs dev-feedback
Focuses: Cc:

Description

Frameworks could use a filter here to customize the message: _n('Your theme supports %s menu. Select which menu you would like to use.', 'Your theme supports %s menus. Select which menu appears in each location.', $num_locations ). For example, it may be the child theme that doesn't support the menus. Also, if none are supported (say via add_theme_support), then when it's zero, it says: "Your theme supports 0 menus. Select which menu appears in each location." (which doesn't make much sense). So adding a filter can enable theme developers to further customize.

An example use case:
add_filter( 'nav_menu_theme_support_text' , 'wps_nav_menu_theme_support_text' );
function wps_nav_menu_theme_support_text ( $num_locations ) {

if ( $num_locations == 0 )

$text = 'Your child theme does not support custom menus.';

else

$text = _n('Your theme supports %s menu. Select which menu you would like to use.', 'Your theme supports %s menus. Select which menu appears in each location.', $num_locations );

return $text;

}

Attachments (3)

nav_menu_theme_support_text.patch (939 bytes) - added by wpsmith 4 years ago.
refreshed-nav_menu_theme_support_text.diff (996 bytes) - added by horike 18 months ago.
ticket#19272.patch (1.1 KB) - added by bhargavbhandari90 14 months ago.
Check with this. As we applying filter to a string so add

Download all attachments as: .zip

Change History (12)

#1 @chriscct7
18 months ago

  • Keywords good-first-bug good-first-patch needs-refresh added; has-patch removed

Needs to be refreshed because of #24945

#2 @horike
18 months ago

  • Keywords has-patch added; needs-refresh removed

#3 @Yahire Furniture
17 months ago

  • Keywords needs-testing added

@bhargavbhandari90
14 months ago

Check with this. As we applying filter to a string so add

#4 in reply to: ↑ description @bhargavbhandari90
14 months ago

Replying to wpsmith:

Frameworks could use a filter here to customize the message: _n('Your theme supports %s menu. Select which menu you would like to use.', 'Your theme supports %s menus. Select which menu appears in each location.', $num_locations ). For example, it may be the child theme that doesn't support the menus. Also, if none are supported (say via add_theme_support), then when it's zero, it says: "Your theme supports 0 menus. Select which menu appears in each location." (which doesn't make much sense). So adding a filter can enable theme developers to further customize.

An example use case:
add_filter( 'nav_menu_theme_support_text' , 'wps_nav_menu_theme_support_text' );
function wps_nav_menu_theme_support_text ( $num_locations ) {

if ( $num_locations == 0 )

$text = 'Your child theme does not support custom menus.';

else

$text = _n('Your theme supports %s menu. Select which menu you would like to use.', 'Your theme supports %s menus. Select which menu appears in each location.', $num_locations );

return $text;

}

As we are applying filters to string, so add filter will contain two arguments so $num_locations should be 2nd argument..

#5 @obenland
11 months ago

  • Owner set to bhargavbhandari90
  • Status changed from new to assigned

#6 @wonderboymusic
8 months ago

  • Keywords needs-docs added; needs-testing removed
  • Owner changed from bhargavbhandari90 to DrewAPicture

#7 @wonderboymusic
8 months ago

  • Milestone changed from Awaiting Review to 4.4

#8 @DrewAPicture
7 months ago

  • Keywords dev-feedback added; good-first-patch removed

As of [31951] we're using the decoupled strings from the Customizer here, which actually means we're using one of two different strings. @SergeyBiryukov: What would be your best suggestion if we wanted to make this text filterable? My first thought was to package them into an array and make that filterable, but I'm not sure I like that.

Currently:

<?php
if ( 1 == $num_locations ) {
        echo '<p>' . __( 'Your theme supports one menu. Select which menu you would like to use.' ) . '</p>';
} else {
        echo '<p>' .  sprintf( _n( 'Your theme supports %s menu. Select which menu appears in each location.', 'Your theme supports %s menus. Select which menu appears in each location.', $num_locations ), number_format_i18n( $num_locations ) ) . '</p>';
}
Last edited 7 months ago by DrewAPicture (previous) (diff)

#9 @DrewAPicture
7 months ago

  • Milestone changed from 4.4 to Future Release

Moving off the milestone until we can figure out a plan here.

Note: See TracTickets for help on using tickets.