{
	"$schema": "https://playground.wordpress.net/blueprint-schema.json",
	"landingPage": "/wp-admin/nav-menus.php",
	"preferredVersions": {
		"php": "8.2",
		"wp": "latest"
	},
	"features": {
		"networking": true
	},
	"steps": [
		{
			"step": "login",
			"username": "admin",
			"password": "password"
		},
		{
			"step": "installPlugin",
			"pluginData": {
				"resource": "wordpress.org/plugins",
				"slug": "automatically-hierarchic-categories-in-menu"
			},
			"options": {
				"activate": true
			}
		},
		{
			"step": "installTheme",
			"themeData": {
				"resource": "wordpress.org/themes",
				"slug": "popularfx"
			},
			"options": {
				"activate": true
			}
		},
		{
			"step": "setSiteOptions",
			"options": {
				"blogname": "Test Site",
				"blogdescription": "Automatically Hierarchic Categories in Menu by Atakan Au"
			}
		},
		{
			"step": "runPHP",
			"code": "<?php\nrequire_once '/wordpress/wp-load.php';\n\n// 1. Update User Profile & Public Display Name\nwp_update_user(array(\n\t'ID'           => 1,\n\t'first_name'   => 'Atakan',\n\t'last_name'    => 'Au',\n\t'display_name' => 'Atakan Au'\n));\n\n// 2. Hide Unnecessary Nav Menu Screen Options\nupdate_user_meta(1, 'metaboxhidden_nav-menus', array('add-post_tag'));\nupdate_user_meta(1, 'managenav-menuscolumnshidden', array('link-target', 'title-attribute', 'css-classes', 'xfn'));\n\n// 3. Build Category Hierarchy\n$parent_prog = wp_insert_term('Programming', 'category');\n$parent_food = wp_insert_term('Food', 'category');\n$parent_bev  = wp_insert_term('Beverages', 'category');\n\n// Level 1 Subcategories\n$prog_languages = array('Assembly', 'C#', 'Go', 'Java', 'JavaScript', 'Kotlin', 'PHP', 'Python', 'R', 'Ruby');\nforeach ($prog_languages as $lang) {\n\twp_insert_term($lang, 'category', array('parent' => $parent_prog['term_id']));\n}\n\n$sub_fruits  = wp_insert_term('Fruits', 'category', array('parent' => $parent_food['term_id']));\n$sub_veggies = wp_insert_term('Vegetables', 'category', array('parent' => $parent_food['term_id']));\n\n$sub_hot_bev  = wp_insert_term('Hot Beverages', 'category', array('parent' => $parent_bev['term_id']));\n$sub_cold_bev = wp_insert_term('Cold Beverages', 'category', array('parent' => $parent_bev['term_id']));\n$sub_alc_bev  = wp_insert_term('Alcoholic Beverages', 'category', array('parent' => $parent_bev['term_id']));\n\n// Level 2 Subcategories\n$fruits = array('Apple', 'Banana', 'Orange');\nforeach ($fruits as $fruit) {\n\twp_insert_term($fruit, 'category', array('parent' => $sub_fruits['term_id']));\n}\n\n$vegetables = array('Carrot', 'Tomato', 'Spinach');\nforeach ($vegetables as $veg) {\n\twp_insert_term($veg, 'category', array('parent' => $sub_veggies['term_id']));\n}\n\n$hot_drinks = array('Coffee', 'Tea', 'Hot Chocolate');\nforeach ($hot_drinks as $drink) {\n\twp_insert_term($drink, 'category', array('parent' => $sub_hot_bev['term_id']));\n}\n\n$cold_drinks = array('Soda', 'Iced Tea', 'Lemonade', 'Ayran');\nforeach ($cold_drinks as $drink) {\n\twp_insert_term($drink, 'category', array('parent' => $sub_cold_bev['term_id']));\n}\n\n$alcoholic_drinks = array('Beer', 'Wine', 'Whiskey', 'Raki');\nforeach ($alcoholic_drinks as $drink) {\n\twp_insert_term($drink, 'category', array('parent' => $sub_alc_bev['term_id']));\n}\n\n// 4. Create Menu & Assign to Theme Location\n$menu_id = wp_create_nav_menu('Primary Menu');\n$menu_locations = get_theme_mod('nav_menu_locations');\nif (!is_array($menu_locations)) {\n\t$menu_locations = array();\n}\n$menu_locations['primary'] = $menu_id;\nset_theme_mod('nav_menu_locations', $menu_locations);\n\n// 5. Add Custom Plugin Shortcode Menu Item\n$shortcode_data = array(\n\t'menu-item-object'      => 'post',\n\t'menu-item-object-id'   => 1,\n\t'menu-item-name'        => 'sample-shortcode',\n\t'menu-item-status'      => 'publish',\n\t'menu-item-parent-id'   => 0,\n\t'menu-item-position'    => 1,\n\t'menu-item-title'       => 'Sample Shortcode',\n\t'menu-item-description' => '[autocategorymenu hide_empty=\"0\" level=\"3\"]'\n);\n$shortcode_item_id = wp_update_nav_menu_item($menu_id, 0, $shortcode_data);\n\nupdate_post_meta($shortcode_item_id, '_menu_item_type', 'aau_ahcm');\nupdate_post_meta($shortcode_item_id, '_menu_item_menu_item_parent', 0);\nupdate_post_meta($shortcode_item_id, '_menu_item_object_id', 37);\nupdate_post_meta($shortcode_item_id, '_menu_item_object', 'aau_ahcm');\nupdate_post_meta($shortcode_item_id, '_menu_item_target', '');\nupdate_post_meta($shortcode_item_id, '_menu_item_classes', array(''));\nupdate_post_meta($shortcode_item_id, '_menu_item_xfn', '');\nupdate_post_meta($shortcode_item_id, '_menu_item_url', '');\n\n// 6. Add Custom Link & Sub Menu Items\n$docs_item_id = wp_update_nav_menu_item($menu_id, 0, array(\n\t'menu-item-title'  => 'Docs',\n\t'menu-item-url'    => 'https://atakanau.blogspot.com',\n\t'menu-item-type'   => 'custom',\n\t'menu-item-status' => 'publish'\n));\n\nwp_update_nav_menu_item($menu_id, 0, array(\n\t'menu-item-title'     => 'Default Post',\n\t'menu-item-object'    => 'post',\n\t'menu-item-object-id' => 1,\n\t'menu-item-type'      => 'post_type',\n\t'menu-item-status'    => 'publish',\n\t'menu-item-parent-id' => $docs_item_id\n));\n\nwp_update_nav_menu_item($menu_id, 0, array(\n\t'menu-item-title'     => 'Default Page',\n\t'menu-item-object'    => 'page',\n\t'menu-item-object-id' => 2,\n\t'menu-item-type'      => 'post_type',\n\t'menu-item-status'    => 'publish',\n\t'menu-item-parent-id' => $docs_item_id\n));\n?>"
		}
	]
}
