{"id":313220,"date":"2026-05-18T17:23:22","date_gmt":"2026-05-18T17:23:22","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/air-asset-picker\/"},"modified":"2026-05-18T17:22:49","modified_gmt":"2026-05-18T17:22:49","slug":"air-asset-picker","status":"publish","type":"plugin","link":"https:\/\/si.wordpress.org\/plugins\/air-asset-picker\/","author":23498349,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"0.3.0","stable_tag":"0.3.0","tested":"6.9.4","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"Air Asset Picker","header_author":"Air Inc","header_description":"Embed brand-approved images and videos from your Air workspace directly in the WordPress block editor.","assets_banners_color":"a9bcd5","last_updated":"2026-05-18 17:22:49","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/air.inc","rating":0,"author_block_rating":0,"active_installs":0,"downloads":29,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.3.0":{"tag":"0.3.0","author":"airinc","date":"2026-05-18 17:22:49"}},"upgrade_notice":{"0.3.0":"<p>WordPress.org compliance pass: prefix rename (<code>air_inc<\/code> \u2192 <code>airpicker<\/code>), main file rename, and ship-only-runtime zip. Legacy workspace ID is migrated automatically on activation.<\/p>","0.2.13":"<p>Submission-form fix: removed duplicate plugin\/author URI.<\/p>","0.2.12":"<p>Refreshed screenshots with Air-owned imagery.<\/p>","0.2.11":"<p>Removed legacy plugin-directory filters ahead of WordPress.org submission.<\/p>","0.2.10":"<p>Submission-blocker fix: plugin no longer overrides its own WordPress.org listing.<\/p>","0.2.9":"<p>Plugin renamed to &quot;Air Asset Picker&quot; for WordPress.org compliance.<\/p>","0.2.8":"<p>Readme cleanup ahead of WordPress.org submission.<\/p>","0.2.7":"<p>Design QA pass \u2014 updated button sizes, thumbnail dimensions, CTA copy, and Enterprise paywall to match Figma.<\/p>"},"ratings":[],"assets_icons":{"icon-1024x1024.png":{"filename":"icon-1024x1024.png","revision":3536085,"resolution":"1024x1024","location":"assets","locale":"","width":1024,"height":1024},"icon-128x128.png":{"filename":"icon-128x128.png","revision":3536085,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3536085,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3536085,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3536085,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"airpicker\/asset-picker":{"$schema":"https:\/\/json.schemastore.org\/block.json","apiVersion":3,"name":"airpicker\/asset-picker","title":"Air","description":"Embed an image or video asset from Air","category":"media","textdomain":"air-asset-picker","supports":{"html":false},"attributes":{"asset":{"type":"object","default":null},"altText":{"type":"string","default":""},"resolution":{"type":"string","default":"full"},"displayWidth":{"type":"number"},"displayHeight":{"type":"number"}},"example":{"attributes":{"asset":{"assetId":"example-123","type":"image","alt":"Example Air image","caption":"An example caption","urls":{"thumbnail":"https:\/\/placecats.com\/300\/300","static":"https:\/\/placecats.com\/800\/600","dynamic":null,"selected":"https:\/\/placecats.com\/800\/600"},"width":800,"height":600}}},"editorScript":"file:.\/index.js"}},"tagged_versions":["0.3.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3536085,"resolution":"1","location":"assets","locale":"","width":3452,"height":1050},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3536085,"resolution":"2","location":"assets","locale":"","width":3456,"height":1394},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3536085,"resolution":"3","location":"assets","locale":"","width":3454,"height":1376},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3536085,"resolution":"4","location":"assets","locale":"","width":3452,"height":1342},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3536085,"resolution":"5","location":"assets","locale":"","width":3456,"height":1984},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3536085,"resolution":"6","location":"assets","locale":"","width":3456,"height":1982},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3536085,"resolution":"7","location":"assets","locale":"","width":3456,"height":1982},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3536085,"resolution":"8","location":"assets","locale":"","width":3456,"height":1980},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3536085,"resolution":"9","location":"assets","locale":"","width":3456,"height":1982}},"screenshots":{"1":"Air Asset Picker listed on the WordPress Plugins page","2":"Settings \u2192 Air Media page for entering your workspace ID","3":"Adding the Air block from the Gutenberg block inserter","4":"The Air asset picker gallery \u2014 browse and search your workspace","5":"Log in to your Air account from within the block editor","6":"Preview an asset before inserting it","7":"An Air asset embedded in a WordPress page via CDN URL","8":"Asset details panel with metadata, tags, and insert options","9":"Inserted Air asset shown in the post editor with Replace toolbar"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[148857,261405,14169,14168,233],"plugin_category":[],"plugin_contributors":[263404],"plugin_business_model":[],"class_list":["post-313220","plugin","type-plugin","status-publish","hentry","plugin_tags-block-editor","plugin_tags-brand-assets","plugin_tags-dam","plugin_tags-digital-asset-management","plugin_tags-media-library","plugin_contributors-airinc","plugin_committers-airinc"],"banners":{"banner":"https:\/\/ps.w.org\/air-asset-picker\/assets\/banner-772x250.png?rev=3536085","banner_2x":"https:\/\/ps.w.org\/air-asset-picker\/assets\/banner-1544x500.png?rev=3536085","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/air-asset-picker\/assets\/icon-128x128.png?rev=3536085","icon_2x":"https:\/\/ps.w.org\/air-asset-picker\/assets\/icon-256x256.png?rev=3536085","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/air-asset-picker\/assets\/screenshot-1.png?rev=3536085","caption":"Air Asset Picker listed on the WordPress Plugins page"},{"src":"https:\/\/ps.w.org\/air-asset-picker\/assets\/screenshot-2.png?rev=3536085","caption":"Settings \u2192 Air Media page for entering your workspace ID"},{"src":"https:\/\/ps.w.org\/air-asset-picker\/assets\/screenshot-3.png?rev=3536085","caption":"Adding the Air block from the Gutenberg block inserter"},{"src":"https:\/\/ps.w.org\/air-asset-picker\/assets\/screenshot-4.png?rev=3536085","caption":"The Air asset picker gallery \u2014 browse and search your workspace"},{"src":"https:\/\/ps.w.org\/air-asset-picker\/assets\/screenshot-5.png?rev=3536085","caption":"Log in to your Air account from within the block editor"},{"src":"https:\/\/ps.w.org\/air-asset-picker\/assets\/screenshot-6.png?rev=3536085","caption":"Preview an asset before inserting it"},{"src":"https:\/\/ps.w.org\/air-asset-picker\/assets\/screenshot-7.png?rev=3536085","caption":"An Air asset embedded in a WordPress page via CDN URL"},{"src":"https:\/\/ps.w.org\/air-asset-picker\/assets\/screenshot-8.png?rev=3536085","caption":"Asset details panel with metadata, tags, and insert options"},{"src":"https:\/\/ps.w.org\/air-asset-picker\/assets\/screenshot-9.png?rev=3536085","caption":"Inserted Air asset shown in the post editor with Replace toolbar"}],"raw_content":"<!--section=description-->\n<p>Air Asset Picker is a Gutenberg block that connects your WordPress site to your Air workspace. Content editors can browse, search, and insert brand-approved images and videos from Air without ever leaving the WordPress block editor \u2014 no downloading, no re-uploading.<\/p>\n\n<p><strong>How it works:<\/strong><\/p>\n\n<ul>\n<li>Add the <strong>Air<\/strong> block to any page or post<\/li>\n<li>Click <strong>Add asset<\/strong> to open the Air asset picker<\/li>\n<li>Log in to your Air account<\/li>\n<li>Browse or search your workspace and select an asset<\/li>\n<li>The asset is embedded via Air's CDN URL \u2014 no files are stored in WordPress<\/li>\n<\/ul>\n\n<p><strong>Why CDN delivery?<\/strong><\/p>\n\n<p>Assets are served directly from Air's CDN. This means no storage overhead in WordPress, and any updates made to an asset in Air are reflected on your site immediately.<\/p>\n\n<p><strong>Requirements:<\/strong><\/p>\n\n<ul>\n<li>An active Air account on an Enterprise plan<\/li>\n<li>Your Air workspace ID (found in your Air account settings)<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to Air (https:\/\/air.inc) to enable asset selection and embedding. Air is a digital asset management service operated by Air Labs, Inc.<\/p>\n\n<p><strong>When is data sent?<\/strong><\/p>\n\n<ul>\n<li>When a user opens the asset picker inside the WordPress block editor, the plugin loads the Air picker UI from <code>https:\/\/wordpress-plugin.air.inc<\/code> in an iframe. This is required to authenticate the user and display the asset gallery.<\/li>\n<li>When an asset is selected, only the asset's CDN URL and metadata (filename, dimensions, alt text, caption) are sent back to WordPress and stored as block attributes. No binary file data is transferred to WordPress.<\/li>\n<li>When a published page is viewed, the browser loads the embedded image or video directly from Air's CDN.<\/li>\n<\/ul>\n\n<p><strong>What data is sent?<\/strong><\/p>\n\n<ul>\n<li>Your Air workspace ID (entered in Settings \u2192 Air Media)<\/li>\n<li>Authentication credentials you enter into the Air picker (handled entirely by Air, never seen by the plugin)<\/li>\n<li>No personal data from WordPress is transmitted to Air<\/li>\n<\/ul>\n\n<p><strong>Terms and privacy:<\/strong><\/p>\n\n<ul>\n<li>Air Terms of Service: <a href=\"https:\/\/air.inc\/terms\">https:\/\/air.inc\/terms<\/a><\/li>\n<li>Air Privacy Policy: <a href=\"https:\/\/air.inc\/privacy\">https:\/\/air.inc\/privacy<\/a><\/li>\n<\/ul>\n\n<h3>Source Code<\/h3>\n\n<p>The compiled JavaScript shipped in <code>\/build<\/code> is generated from human-readable sources in <code>\/src<\/code> using <code>@wordpress\/scripts<\/code> (webpack). The full source code, build configuration, and development instructions are publicly available at:<\/p>\n\n<p><a href=\"https:\/\/github.com\/AirLabsTeam\/air-wordpress-plugin\">https:\/\/github.com\/AirLabsTeam\/air-wordpress-plugin<\/a><\/p>\n\n<p><strong>Build prerequisites:<\/strong><\/p>\n\n<ul>\n<li>Node.js 22 or later<\/li>\n<li>npm 10 or later (or Yarn 1.x)<\/li>\n<\/ul>\n\n<p><strong>Build steps:<\/strong><\/p>\n\n<pre><code>git clone https:\/\/github.com\/AirLabsTeam\/air-wordpress-plugin.git\ncd air-wordpress-plugin\nnpm install\nnpm run build:prod\n<\/code><\/pre>\n\n<p>The build outputs <code>\/build\/index.js<\/code>, <code>\/build\/index.asset.php<\/code>, and <code>\/build\/block.json<\/code> \u2014 the exact files shipped in the WordPress.org zip. No third-party minified libraries are bundled; all dependencies are sourced from <code>@wordpress\/*<\/code> packages provided by WordPress core.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install the plugin from the WordPress.org plugin directory, or upload the <code>air-asset-picker<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to <strong>Settings \u2192 Air Media<\/strong> and enter your Air workspace ID.<\/li>\n<li>Edit any page or post, add the <strong>Air<\/strong> block, and click <strong>Add asset<\/strong> to start inserting assets.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20do%20i%20find%20my%20workspace%20id%3F\"><h3>Where do I find my workspace ID?<\/h3><\/dt>\n<dd><p>Log in to your Air account, go to your workspace settings, and copy the workspace ID from the URL or settings panel.<\/p><\/dd>\n<dt id=\"do%20i%20need%20an%20air%20account%3F\"><h3>Do I need an Air account?<\/h3><\/dt>\n<dd><p>Yes. This plugin requires an active Air account on an Enterprise plan. Visit <a href=\"https:\/\/air.inc\">air.inc<\/a> to learn more.<\/p><\/dd>\n<dt id=\"does%20this%20upload%20files%20to%20wordpress%3F\"><h3>Does this upload files to WordPress?<\/h3><\/dt>\n<dd><p>No. Assets are embedded via Air's CDN URL. No files are stored in your WordPress media library.<\/p><\/dd>\n<dt id=\"which%20editor%20is%20supported%3F\"><h3>Which editor is supported?<\/h3><\/dt>\n<dd><p>The Gutenberg block editor (WordPress 6.3+). The classic TinyMCE editor is not supported.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>WordPress.org compliance: renamed PHP function\/option\/define\/admin-page prefixes from <code>air_inc<\/code>\/<code>air<\/code> to <code>airpicker<\/code> (4+ char prefix requirement). Renamed localized JS global from <code>airAssetPickerData<\/code> to <code>airpickerData<\/code>. Added one-shot migration that copies the legacy <code>air_workspace_id<\/code> option to <code>airpicker_workspace_id<\/code> on activation and on <code>plugins_loaded<\/code> so existing installs retain their workspace ID without manual reconfiguration.<\/li>\n<li>Renamed main plugin file from <code>index.php<\/code> to <code>air-asset-picker.php<\/code> to match the plugin slug.<\/li>\n<li>Documented the public source repository and build instructions in the readme so reviewers and downstream developers can rebuild <code>\/build\/index.js<\/code> from <code>\/src<\/code>.<\/li>\n<li>Plugin zip no longer ships the WordPress.org directory assets (<code>\/assets<\/code>), webpack\/biome configs, or <code>node_modules<\/code> \u2014 added <code>.distignore<\/code> so only runtime files (<code>air-asset-picker.php<\/code>, <code>readme.txt<\/code>, <code>\/build<\/code>) are distributed.<\/li>\n<\/ul>\n\n<h4>0.2.13<\/h4>\n\n<ul>\n<li>Removed the <code>Plugin URI<\/code> header; the WordPress.org submission form requires the plugin and author URIs to be distinct.<\/li>\n<\/ul>\n\n<h4>0.2.12<\/h4>\n\n<ul>\n<li>Replaced stock-photo screenshots (5\u20139) with Air-owned imagery and captured the recent QA design improvements.<\/li>\n<\/ul>\n\n<h4>0.2.11<\/h4>\n\n<ul>\n<li>Removed the wp-admin plugin-directory filters (<code>plugins_api<\/code> \/ <code>plugins_api_result<\/code>) that previously replaced the WordPress.org search and details responses with a local payload. WordPress.org is now the sole source of plugin metadata, ratings, and updates.<\/li>\n<\/ul>\n\n<h4>0.2.10<\/h4>\n\n<ul>\n<li>Removed canonical slug <code>air-asset-picker<\/code> from the internal legacy-listing replacement filter so the plugin will not override its own WordPress.org plugin-info payload (auto-updates, ratings, and stats from WordPress.org are now authoritative once the plugin is listed there).<\/li>\n<\/ul>\n\n<h4>0.2.9<\/h4>\n\n<ul>\n<li>Renamed plugin to \"Air Asset Picker\" to comply with WordPress.org trademark restrictions on the term \"WordPress\" in plugin names.<\/li>\n<li>Added canonical submission build (<code>air-asset-picker.zip<\/code>) so the installed folder matches the plugin's text domain \u2014 resolves Plugin Check text-domain-mismatch errors.<\/li>\n<\/ul>\n\n<h4>0.2.8<\/h4>\n\n<ul>\n<li>Readme prepared for WordPress.org submission: accurate short description, External Services disclosure, current changelog, updated screenshots and CTA references.<\/li>\n<\/ul>\n\n<h4>0.2.7<\/h4>\n\n<ul>\n<li>Inspector buttons (Replace image, View in Air) resized to match Figma spec<\/li>\n<li>Preview thumbnail pinned to 47\u00d776 with center-crop for tall images<\/li>\n<li>Empty-state and picker CTAs unified as \"Add asset\" (single upload)<\/li>\n<li>Enterprise paywall copy updated: \"Upgrade to Enterprise\" \/ \"Explore plans\"<\/li>\n<\/ul>\n\n<h4>0.2.6<\/h4>\n\n<ul>\n<li>Internal version bump<\/li>\n<\/ul>\n\n<h4>0.2.5<\/h4>\n\n<ul>\n<li>Restored \"View in Air\" copy (was briefly \"View in AIR\")<\/li>\n<\/ul>\n\n<h4>0.2.4<\/h4>\n\n<ul>\n<li>QA fixes for inspector layout and button heights<\/li>\n<\/ul>\n\n<h4>0.2.3<\/h4>\n\n<ul>\n<li>Pinned Replace button to deterministic 32px height across WordPress versions<\/li>\n<\/ul>\n\n<h4>0.2.2<\/h4>\n\n<ul>\n<li>Fallback to <code>urls.selected<\/code> for \"View in Air\" when <code>urls.airDetail<\/code> is absent<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Inspector polish and accessibility improvements<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Asset detail panel improvements<\/li>\n<li>Inspector controls for resolution and resize<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Air Gutenberg block with iframe-based asset picker<\/li>\n<li>Settings page for workspace ID configuration<\/li>\n<li>Image and video asset support with Air CDN delivery<\/li>\n<\/ul>","raw_excerpt":"Embed brand-approved images and videos from your Air workspace directly in the WordPress block editor.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/313220","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=313220"}],"author":[{"embeddable":true,"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/airinc"}],"wp:attachment":[{"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=313220"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=313220"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=313220"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=313220"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=313220"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=313220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}