Formatting: Ensure that wp_filter_object_list() will return an array when being passed an object with magic methods.

Fixes #50095.

Props johnjamesjacoby.


git-svn-id: https://develop.svn.wordpress.org/trunk@48413 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Jake Spurlock 2020-07-10 00:29:48 +00:00
parent 0999a01956
commit 0802e754a2

View File

@ -102,12 +102,23 @@ class WP_List_Util {
$filtered = array(); $filtered = array();
foreach ( $this->output as $key => $obj ) { foreach ( $this->output as $key => $obj ) {
$to_match = (array) $obj;
$matched = 0; $matched = 0;
foreach ( $args as $m_key => $m_value ) { foreach ( $args as $m_key => $m_value ) {
if ( array_key_exists( $m_key, $to_match ) && $m_value == $to_match[ $m_key ] ) {
$matched++; if ( is_array( $obj ) ) {
// Treat object as an array
if ( array_key_exists( $m_key, $obj ) && ( $m_value == $obj[ $m_key ] ) ) {
$matched++;
}
} elseif ( is_object( $obj ) ) {
// Treat object as an object
if ( isset( $obj->{$m_key} ) && ( $m_value == $obj->{$m_key} ) ) {
$matched++;
}
} }
} }