Automattic\WooCommerce\Internal\CLI\Migrator\Core

WooCommerceProductImporter::update_seo_metaprivateWC 1.0

Updates SEO meta fields if Yoast SEO is active.

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

Хуков нет.

Возвращает

null. Ничего (null).

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

// private - только в коде основоного (родительского) класса
$result = $this->update_seo_meta( $product_id, $metafields, $product_data ): void;
$product_id(int) (обязательный)
The product ID.
$metafields(массив) (обязательный)
Key-value array of metafields from standardized data.
$product_data(массив) (обязательный)
Full product data for fallbacks.

Код WooCommerceProductImporter::update_seo_meta() WC 11.0.0

private function update_seo_meta( int $product_id, array $metafields, array $product_data ): void {
	if ( ! defined( 'WPSEO_VERSION' ) ) {
		return;
	}

	$seo_title       = $metafields['global_title_tag'] ?? null;
	$seo_description = $metafields['global_description_tag'] ?? null;

	$final_seo_title       = $seo_title ? $seo_title : ( $product_data['name'] ?? '' );
	$fallback_desc         = $product_data['description'] ? $product_data['description'] : ( $product_data['short_description'] ?? '' );
	$final_seo_description = $seo_description ? $seo_description : wp_strip_all_tags( $fallback_desc );

	$current_title = get_post_meta( $product_id, '_yoast_wpseo_title', true );
	if ( $current_title !== $final_seo_title && ! empty( $final_seo_title ) ) {
		update_post_meta( $product_id, '_yoast_wpseo_title', $final_seo_title );
	}

	$current_desc = get_post_meta( $product_id, '_yoast_wpseo_metadesc', true );
	if ( $current_desc !== $final_seo_description && ! empty( $final_seo_description ) ) {
		$truncated_desc = mb_substr( $final_seo_description, 0, 160 );
		update_post_meta( $product_id, '_yoast_wpseo_metadesc', $truncated_desc );
	}
}