WordPress.org

Make WordPress Core

Opened 17 months ago

Closed 3 months ago

#22409 closed enhancement (wontfix)

add multiple selected options support to selected() function

Reported by: bitacre Owned by:
Milestone: Priority: normal
Severity: minor Version: 3.4.2
Component: Template Keywords:
Focuses: Cc:

Description

The current selected() function returns selected="selected" if two strings match, but does not correctly handle arrays that result from select options that have multiple="multiple" enabled (it just checks the first item in the array by forcing a string type).

I suggest either adding correct handling of arrays or alternatively adding a separate multiselected() function to handle this situation.

This could be accomplished by altering the current __checked_selected_helper() function to this:

function __checked_selected_helper( $helper, $current, $echo, $type ) {
  if( is_array( $helper ) && in_array( $current, $helper, true ) )
    $result = " $type='$type'";
  elseif ( (string) $helper === (string) $current )
    $result = " $type='$type'";
  else
    $result = '';
	
  if ( $echo )
    echo $result;

  return $result;
}

I've just added the first 2 lines and changed the first if to an elseif.

Change History (3)

comment:1 bitacre17 months ago

You could also merge the if and elseif since they have the same result, but I thought that looked messy.

Version 0, edited 17 months ago by bitacre (next)

comment:2 nacin3 months ago

  • Component changed from Validation to Template

comment:3 nacin3 months ago

  • Milestone Awaiting Review deleted
  • Resolution set to wontfix
  • Status changed from new to closed

This doesn't seem like something we need to support, as it complicates the function and how it would be used. It would be more intuitive to roll your own handing. Sorry for having not received a reply in so long.

Note: See TracTickets for help on using tickets.