=== 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:

```
<!-- wp:query {"query":{"perPage":1,"order":"desc","orderBy":"rand"}} -->
```

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.