<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
<?php

declare( strict_types=1 );

namespace Automattic\WooCommerce\Internal\Integrations;

/**
 * Class WPPostsImporter
 *
 * @since 10.1.0
 */
class WPPostsImporter {

	/**
	 * Register the WP Posts importer.
	 *
	 * @return void
	 */
	public function register() {
		add_action( 'wp_import_posts', array( $this, 'register_product_attribute_taxonomies' ), 100, 1 );
	}

	/**
	 * Register product attribute taxonomies when importing posts via the WXR importer.
	 *
	 * @since 10.1.0
	 *
	 * @param array $posts The posts to process.
	 * @return array
	 */
	public function register_product_attribute_taxonomies( $posts ) {
		if ( ! is_array( $posts ) || empty( $posts ) ) {
			return $posts;
		}

		foreach ( $posts as $post ) {

			if ( 'product' !== $post['post_type'] || empty( $post['terms'] ) ) {
				continue;
			}

			foreach ( $post['terms'] as $term ) {
				if ( ! strstr( $term['domain'], 'pa_' ) ) {
					continue;
				}

				if ( taxonomy_exists( $term['domain'] ) ) {
					continue;
				}

				$attribute_name = wc_attribute_taxonomy_slug( $term['domain'] );

				// Create the taxonomy.
				if ( ! in_array( $attribute_name, wc_get_attribute_taxonomies(), true ) ) {
					wc_create_attribute(
						array(
							'name'         => $attribute_name,
							'slug'         => $attribute_name,
							'type'         => 'select',
							'order_by'     => 'menu_order',
							'has_archives' => false,
						)
					);
				}

				// Register the taxonomy so that the import works.
				register_taxonomy(
					$term['domain'],
					// phpcs:ignore
					apply_filters( 'woocommerce_taxonomy_objects_' . $term['domain'], array( 'product' ) ),
					// phpcs:ignore
					apply_filters(
						'woocommerce_taxonomy_args_' . $term['domain'],
						array(
							'hierarchical' => true,
							'show_ui'      => false,
							'query_var'    => true,
							'rewrite'      => false,
						)
					)
				);
			}
		}

		return $posts;
	}
}
