defaults = $defaults; } public function mergeDefaults( array $settings ): array { $defaults = json_decode( wp_json_encode( $this->defaults ), true ); foreach ( $defaults[ 'options' ] as $key => $values ) { if ( ! isset( $settings[ 'options' ][ $key ] ) ) { $settings[ 'options' ][ $key ] = $defaults[ 'options' ][ $key ]; } } if ( ! isset( $settings[ 'queries' ] ) ) { $settings[ 'queries' ] = $defaults[ 'queries' ]; } return $settings; } /** * Get the plugin settings. * * @since 1.0.0 * @return object */ public function get(): object { $settings = get_option( 'advanced_columns' ); $settings = json_decode( wp_json_encode( $settings ), true ); $settings = $this->mergeDefaults( $settings ); $settings = json_decode( wp_json_encode( $settings ), false ); $settings->queries = Queries::getFromSettings( $settings->queries ); $settings->context = array( 'version' => ADVANCED_COLUMNS_VERSION, 'url' => ADVANCED_COLUMNS_URL, ); return $settings; } /** * Expose the plugin settings to the Block Editor. * * @since 1.0.0 */ public function provide() { wp_register_script( 'advanced-columns-dummy-header', '' ); wp_enqueue_script( 'advanced-columns-dummy-header' ); wp_localize_script( 'advanced-columns-dummy-header', 'advancedColumnsSettings', (array) $this->get() ); wp_localize_script( 'wp-editor', 'advancedColumnsSettings', (array) $this->get() ); } }