dexable( $indexable, $indexable_before ); } /** * Ensures we have a valid indexable. Creates one if false is passed. * * @param Indexable|false $indexable The indexable. * * @return Indexable The indexable. */ private function ensure_indexable( $indexable ) { if ( ! $indexable ) { return $this->indexable_repository->query()->create(); } return $indexable; } /** * Saves and returns an indexable (on production environments only). * * @param Indexable $indexable The indexable. * @param Indexable|null $indexable_before The indexable before possible changes. * * @return Indexable The indexable. */ private function save_indexable( $indexable, $indexable_before = null ) { $intend_to_save = $this->indexable_helper->should_index_indexables(); /** * Filter: 'wpseo_override_save_indexable' - Allow developers to enable / disable * saving the indexable when the indexable is updated. Warning: overriding * the intended action may cause problems when moving from a staging to a * production environment because indexable permalinks may get set incorrectly. * * @param Indexable $indexable The indexable to be saved. * * @api bool $intend_to_save True if YoastSEO intends to save the indexable. */ $intend_to_save = \apply_filters( 'wpseo_should_save_indexable', $intend_to_save, $indexable ); if ( ! $intend_to_save ) { return $indexable; } // Save the indexable before running the WordPress hook. $indexable->save(); if ( $indexable_before ) { /** * Action: 'wpseo_save_indexable' - Allow developers to perform an action * when the indexable is updated. * * @param Indexable $indexable_before The indexable before saving. * * @api Indexable $indexable The saved indexable. */ \do_action( 'wpseo_save_indexable', $indexable, $indexable_before ); } return $indexable; } }