WordPress.org

Make WordPress Core

Ticket #40458: 40458.patch

File 40458.patch, 1.7 KB (added by ocean90, 2 years ago)
  • src/wp-includes/class-wp-site.php

     
    240240                        case 'siteurl':
    241241                        case 'post_count':
    242242                        case 'home':
     243                        default:
    243244                                if ( ! did_action( 'ms_loaded' ) ) {
    244245                                        return null;
    245246                                }
     247
    246248                                $details = $this->get_details();
    247                                 return $details->$key;
     249                                if ( isset( $details->$key ) ) {
     250                                        return $details->$key;
     251                                }
    248252                }
    249253
    250254                return null;
     
    275279                                        return false;
    276280                                }
    277281                                return true;
     282                        default:
     283                                if ( ! did_action( 'ms_loaded' ) ) {
     284                                        return false;
     285                                }
     286
     287                                $details = $this->get_details();
     288                                if ( isset( $details->$key ) ) {
     289                                        return true;
     290                                }
    278291                }
    279292
    280293                return false;
  • tests/phpunit/tests/multisite/siteDetails.php

     
    144144
    145145                $this->assertNotFalse( $cached_details );
    146146        }
     147
     148        /**
     149         * @ticket 40458
     150         */
     151        public function test_site_details_filter_with_custom_value() {
     152                add_filter( 'site_details', array( $this, '_filter_site_details_custom_value' ) );
     153                $site = get_site();
     154                $custom_value_isset = isset( $site->custom_value );
     155                $custom_value = $site->custom_value;
     156                remove_filter( 'site_details', array( $this, '_filter_site_details_custom_value' ) );
     157
     158                $this->assertTrue( $custom_value_isset );
     159                $this->assertSame( 'foo', $custom_value );
     160        }
     161
     162        public function _filter_site_details_custom_value( $details ) {
     163                $details->custom_value = 'foo';
     164                return $details;
     165        }
    147166}
    148167
    149168endif;