Yoast\WP\SEO\Actions\Importing\Aioseo

Aioseo_Posts_Importing_Action::index()publicYoast 1.0

Imports AIOSEO meta data and creates the respective Yoast indexables and postmeta.

Метод класса: Aioseo_Posts_Importing_Action{}

Хуков нет.

Возвращает

Indexable[]|false. An array of created indexables or false if aioseo data was not found.

Использование

$Aioseo_Posts_Importing_Action = new Aioseo_Posts_Importing_Action();
$Aioseo_Posts_Importing_Action->index();

Код Aioseo_Posts_Importing_Action::index() Yoast 22.4

public function index() {
	if ( ! $this->aioseo_helper->aioseo_exists() ) {
		return false;
	}

	$limit              = $this->get_limit();
	$aioseo_indexables  = $this->wpdb->get_results( $this->query( $limit ), \ARRAY_A );
	$created_indexables = [];

	$completed = \count( $aioseo_indexables ) === 0;
	$this->set_completed( $completed );

	// Let's build the list of fields to check their defaults, to identify whether we're gonna import AIOSEO data in the indexable or not.
	$check_defaults_fields = [];
	foreach ( $this->aioseo_to_yoast_map as $yoast_mapping ) {
		// We don't want to check all the imported fields.
		if ( ! \in_array( $yoast_mapping['yoast_name'], [ 'open_graph_image', 'twitter_image' ], true ) ) {
			$check_defaults_fields[] = $yoast_mapping['yoast_name'];
		}
	}

	$last_indexed_aioseo_id = 0;
	foreach ( $aioseo_indexables as $aioseo_indexable ) {
		$last_indexed_aioseo_id = $aioseo_indexable['id'];

		$indexable = $this->indexable_repository->find_by_id_and_type( $aioseo_indexable['post_id'], 'post' );

		// Let's ensure that the current post id represents something that we want to index (eg. *not* shop_order).
		if ( ! \is_a( $indexable, 'Yoast\WP\SEO\Models\Indexable' ) ) {
			continue;
		}

		if ( $this->indexable_helper->check_if_default_indexable( $indexable, $check_defaults_fields ) ) {
			$indexable = $this->map( $indexable, $aioseo_indexable );
			$indexable->save();

			// To ensure that indexables can be rebuild after a reset, we have to store the data in the postmeta table too.
			$this->indexable_to_postmeta->map_to_postmeta( $indexable );
		}

		$last_indexed_aioseo_id = $aioseo_indexable['id'];

		$created_indexables[] = $indexable;
	}

	$cursor_id = $this->get_cursor_id();
	$this->import_cursor->set_cursor( $cursor_id, $last_indexed_aioseo_id );

	return $created_indexables;
}