repository = $repository; $this->builder = $builder; } /** * Initializes the integration. * * This is the place to register hooks and filters. * * @return void */ public function register_hooks() { \add_action( 'update_option_wpseo_titles', [ $this, 'check_option' ], 10, 2 ); } /** * Checks if the home page indexable needs to be rebuild based on option values. * * @param array $old_value The old value of the option. * @param array $new_value The new value of the option. * * @return void */ public function check_option( $old_value, $new_value ) { foreach ( Indexable_System_Page_Builder::OPTION_MAPPING as $type => $options ) { foreach ( $options as $option ) { // If both values aren't set they haven't changed. if ( ! isset( $old_value[ $option ] ) && ! isset( $new_value[ $option ] ) ) { return; } // If the value was set but now isn't, is set but wasn't or is not the same it has changed. if ( ! isset( $old_value[ $option ] ) || ! isset( $new_value[ $option ] ) || $old_value[ $option ] !== $new_value[ $option ] ) { $this->build_indexable( $type ); } } } } /** * Saves the search result. * * @param string $type The type of no index page. * * @return void */ public function build_indexable( $type ) { $indexable = $this->repository->find_for_system_page( $type, false ); $this->builder->build_for_system_page( $type, $indexable ); } }