{"id":281044,"date":"2026-02-17T15:47:10","date_gmt":"2026-02-17T15:47:10","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/llama-shuffle-by-barking-llama\/"},"modified":"2026-02-17T15:49:16","modified_gmt":"2026-02-17T15:49:16","slug":"llama-shuffle-by-barking-llama","status":"publish","type":"plugin","link":"https:\/\/test.wordpress.org\/plugins\/llama-shuffle-by-barking-llama\/","author":7783626,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.1","stable_tag":"1.0.1","tested":"6.9.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Llama Shuffle \u2014 by Barking Llama","header_author":"Barking Llama Designwerks","header_description":"The Loose Llama Randomizer \u2014 serve a random image from Media Library Image Sets or a URL list via a portable endpoint and REST API.","assets_banners_color":"63573e","last_updated":"2026-02-17 15:49:16","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/llama-shuffle\/","header_author_uri":"https:\/\/barkingllama.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":223,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"grandllama","date":"2026-02-17 15:49:16"}},"upgrade_notice":{"1.0.1":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.jpg":{"filename":"icon-128x128.jpg","revision":3463642,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.jpg":{"filename":"icon-256x256.jpg","revision":3463642,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3463642,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3463642,"resolution":"1544x500","location":"assets","locale":"","width":772,"height":250},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3463642,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3463642,"resolution":"1","location":"assets","locale":"","width":2348,"height":2338},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3463642,"resolution":"2","location":"assets","locale":"","width":2344,"height":1940},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3463642,"resolution":"3","location":"assets","locale":"","width":2366,"height":1322}},"screenshots":{"1":"Settings screen showing source mode selection, default Image Set, and available endpoints.","2":"Tagging images with Image Sets in the Media Library.","3":"Filtering Media Library items by Image Set."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[163,84,244,23853,4351],"plugin_category":[50],"plugin_contributors":[248795],"plugin_business_model":[],"class_list":["post-281044","plugin","type-plugin","status-publish","hentry","plugin_tags-images","plugin_tags-media","plugin_tags-random","plugin_tags-rest-api","plugin_tags-utilities","plugin_category-media","plugin_contributors-grandllama","plugin_committers-grandllama"],"banners":{"banner":"https:\/\/ps.w.org\/llama-shuffle-by-barking-llama\/assets\/banner-772x250.png?rev=3463642","banner_2x":"https:\/\/ps.w.org\/llama-shuffle-by-barking-llama\/assets\/banner-1544x500.jpg?rev=3463642","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/llama-shuffle-by-barking-llama\/assets\/icon.svg?rev=3463642","icon":"https:\/\/ps.w.org\/llama-shuffle-by-barking-llama\/assets\/icon.svg?rev=3463642","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/llama-shuffle-by-barking-llama\/assets\/screenshot-1.png?rev=3463642","caption":"Settings screen showing source mode selection, default Image Set, and available endpoints."},{"src":"https:\/\/ps.w.org\/llama-shuffle-by-barking-llama\/assets\/screenshot-2.png?rev=3463642","caption":"Tagging images with Image Sets in the Media Library."},{"src":"https:\/\/ps.w.org\/llama-shuffle-by-barking-llama\/assets\/screenshot-3.png?rev=3463642","caption":"Filtering Media Library items by Image Set."}],"raw_content":"<!--section=description-->\n<p><strong>Llama Shuffle<\/strong> is a lightweight utility plugin that lets you serve a random image from your WordPress Media Library or a list of URLs.<\/p>\n\n<p>It is designed to be:\n* Host-agnostic (works on managed hosts like Pressable, WP Engine, Kinsta)\n* AI-friendly (no redirects required when using the REST endpoint)\n* Simple, fast, and free \u2014 no upsells, no tracking, no external services<\/p>\n\n<p>Common use cases:\n* Random header or hero images\n* Promotional image rotation\n* AI image reference workflows\n* Lightweight image shuffling without sliders or page builders<\/p>\n\n<p>Images can be grouped using <strong>Image Sets<\/strong> (a custom Media Library taxonomy), or supplied via a plain-text URL list.<\/p>\n\n<p>Built by <strong>Barking Llama Designwerks<\/strong>.<\/p>\n\n<h3>Features<\/h3>\n\n<ul>\n<li>Random image selection from Media Library attachments<\/li>\n<li>Image grouping via <strong>Image Sets<\/strong> taxonomy<\/li>\n<li>Optional URL list mode (one URL per line)<\/li>\n<li>Portable endpoint:\n\n<ul>\n<li><code>\/llama-shuffle<\/code><\/li>\n<li><code>\/random-image<\/code> (alias)<\/li>\n<\/ul><\/li>\n<li>REST API endpoint (no redirects):\n\n<ul>\n<li><code>\/wp-json\/llama-shuffle\/v1\/url?set=header<\/code><\/li>\n<\/ul><\/li>\n<li>Cache controls for performance<\/li>\n<li>Shortcode support<\/li>\n<li>No JavaScript required<\/li>\n<li>No upsells, ads, or telemetry<\/li>\n<\/ul>\n\n<h3>How to Use<\/h3>\n\n<h3>Media Library Mode (Recommended)<\/h3>\n\n<ol>\n<li>Go to <strong>Media \u2192 Library<\/strong> (List view works best)<\/li>\n<li>Edit or bulk-edit images<\/li>\n<li>Add one or more terms under <strong>Image Sets<\/strong> (for example: <code>header<\/code>, <code>promo<\/code>, <code>seasonal<\/code>)<\/li>\n<li>Set the <strong>Default Set<\/strong> in plugin settings<\/li>\n<\/ol>\n\n<p>Example endpoints:<\/p>\n\n<p>\/llama-shuffle\n\/llama-shuffle?set=header\n\/random-image?set=promo<\/p>\n\n<h3>REST API (Recommended for scripts &amp; AI workflows)<\/h3>\n\n<p>GET \/wp-json\/llama-shuffle\/v1\/url?set=header<\/p>\n\n<p>Response:\n{\n  \"set\": \"header\",\n  \"url\": \"https:\/\/example.com\/wp-content\/uploads\/2026\/02\/example.png\"\n}<\/p>\n\n<h3>URL List Mode<\/h3>\n\n<p>Switch Source Mode to URL List in settings and paste one image URL per line.<\/p>\n\n<p>Optional section headers allow multiple pools:<\/p>\n\n<p>[set:header]\nhttps:\/\/example.com\/a.jpg\nhttps:\/\/example.com\/b.jpg<\/p>\n\n<p>[set:promo]\nhttps:\/\/example.com\/c.jpg<\/p>\n\n<h3>Shortcode<\/h3>\n\n<p>Display a random image in content:<\/p>\n\n<p>[llama_shuffle set=\"header\" alt=\"Random image\" class=\"my-class\"]<\/p>\n\n<h3>Developer Notes<\/h3>\n\n<p>Llama Shuffle is intentionally small and dependency-free.<\/p>\n\n<p>The plugin avoids file-extension-based endpoints (such as <code>.jpg<\/code>) to remain portable across managed WordPress hosts where static asset handling may bypass WordPress rewrites.<\/p>\n\n<p>For automation, scripts, or AI workflows, the REST API endpoint is the recommended integration point:<\/p>\n\n<p>GET \/wp-json\/llama-shuffle\/v1\/url?set={slug}<\/p>\n\n<p>This endpoint returns a direct image URL without redirects and can be safely consumed by external services.<\/p>\n\n<p>Image pools are implemented as a non-hierarchical attachment taxonomy (<code>llama_image_set<\/code>). This allows images to belong to multiple sets without duplication.<\/p>\n\n<p>Candidate image IDs are cached using WordPress transients to reduce database load. Empty caches are automatically refreshed to avoid stale states.<\/p>\n\n<p>The plugin does not enqueue scripts, register blocks, or add front-end assets. All output is server-side.<\/p>\n\n<p>There are no external API calls, tracking scripts, or upgrade paths.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>llama-shuffle<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate <strong>Llama Shuffle<\/strong> through the Plugins menu<\/li>\n<li>Go to <strong>Settings \u2192 Llama Shuffle<\/strong><\/li>\n<li>Tag images in the Media Library using <strong>Image Sets<\/strong><\/li>\n<li>Visit <code>\/llama-shuffle<\/code> to test<\/li>\n<\/ol>\n\n<p>If the endpoint returns a 404 after activation, visit <strong>Settings \u2192 Permalinks<\/strong> and click <strong>Save Changes<\/strong> once to flush rewrite rules.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"why%20not%20use%20a%20.jpg%20endpoint%3F\"><h3>Why not use a .jpg endpoint?<\/h3><\/dt>\n<dd><p>Many managed hosts treat .jpg paths as static files and block WordPress rewrites. Llama Shuffle uses extensionless endpoints to ensure portability across hosts.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20caching%20or%20cdns%3F\"><h3>Does this work with caching or CDNs?<\/h3><\/dt>\n<dd><p>Yes. Client cache behavior is configurable, and the REST endpoint bypasses redirects entirely.<\/p><\/dd>\n<dt id=\"is%20this%20plugin%20related%20to%20content%20weaver%3F\"><h3>Is this plugin related to Content Weaver?<\/h3><\/dt>\n<dd><p>Llama Shuffle is a standalone utility plugin built by Barking Llama Designwerks. It can be used independently or alongside other tools.<\/p><\/dd>\n<dt id=\"does%20it%20track%20users%20or%20phone%20home%3F\"><h3>Does it track users or phone home?<\/h3><\/dt>\n<dd><p>No. There is no tracking, analytics, telemetry, or external service dependency.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Initial public release<\/li>\n<li>Media Library Image Sets support<\/li>\n<li>Portable shuffle endpoint<\/li>\n<li>REST API endpoint<\/li>\n<li>URL list mode<\/li>\n<li>Shortcode support<\/li>\n<\/ul>","raw_excerpt":"The Loose Llama Randomizer. Serve a random image from Media Library image sets or a URL list via a portable endpoint or REST API.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/281044","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=281044"}],"author":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/grandllama"}],"wp:attachment":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=281044"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=281044"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=281044"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=281044"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=281044"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=281044"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}