=== Random Posts for Query Loop Block === Contributors: ctrs Tags: query loop, random, block editor, orderby, gutenberg Requires at least: 6.0 Tested up to: 6.9 Requires PHP: 7.4 Stable tag: 1.0.5 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Adds "rand" to the REST API orderby options so the Query Loop block can use random post order safely without breaking the Site Editor preview. == Description == The Query Loop block in WordPress does not include a "Random" ordering option in the sidebar UI. However, WordPress core *does* support `orderby = rand` in `WP_Query`. The problem: Using `"orderBy": "rand"` inside a Query Loop block can cause the **Site Editor preview to fail**, because `rand` is not included in the REST API schema for posts. This plugin fixes that by extending the REST API orderby enum so the editor recognizes `"rand"` as valid. ### ✔ What this plugin does - Adds `"rand"` to the REST API `orderby` enum for posts and pages. - Allows the Query Loop block to use `"orderBy": "rand"` safely. - Prevents JSON errors and broken previews in the Site Editor. - Makes “random post” layouts work reliably both in the editor and frontend. ### ⚠ What this plugin does *not* do - It does **not** add a “Random” option to the Query Loop UI dropdown. (That UI is defined in Gutenberg’s JavaScript.) - You must still set `"orderBy": "rand"` manually using the Code Editor. ### Example use case Want your homepage, blog, quotes site, testimonials, or featured-section to show **a different post every time the page loads?** Install this plugin → open the template → switch to Code Editor → set `"orderBy": "rand"`. == Installation == 1. Upload the plugin folder to `/wp-content/plugins/random-posts-for-query-loop-block/` or install it via **Plugins → Add New → Upload Plugin**. 2. Activate the plugin via **Plugins → Installed Plugins**. 3. Open the **Site Editor** and edit a template or page containing a **Query Loop** block. 4. Switch to **Code Editor** (top-right kebab menu → *Code editor*). 5. Find the `wp:query` block and set: `"orderBy": "rand"` ### Example: ``` ``` 6. Save the template. 7. The Query Loop will now return one random post on each page load, and the Site Editor preview will continue to work normally. == Frequently Asked Questions == = Will this add a “Random” option to the Query Loop sidebar? = No. The dropdown list is defined in Gutenberg’s JavaScript and cannot be modified by PHP alone. You must edit the block’s attributes in **Code Editor**. = Does this affect frontend queries outside the block editor? = No. It only extends the REST API schema used by the editor. `WP_Query` has natively supported `orderby = 'rand'` for many years. = Does this slow down my website? = No extra load is added beyond core WordPress behavior. However, `orderby = rand` can be heavy for very large datasets — this is true with or without this plugin. == Changelog == = 1.0.0 = * Initial release. Adds `rand` to the REST API `orderby` enum so Query Loop can safely use random order.