Title: Goblin Shelf: Book Reviews &amp; Reading Lists
Author: Goblin Department
Published: <strong>October 18, 2026</strong>
Last modified: October 18, 2026

---

Search plugins

![](https://ps.w.org/goblin-shelf/assets/banner-772x250.png?rev=3753658)

![](https://ps.w.org/goblin-shelf/assets/icon-256x256.png?rev=3753658)

# Goblin Shelf: Book Reviews & Reading Lists

 By [Goblin Department](https://profiles.wordpress.org/goblindept/)

[Download](https://downloads.wordpress.org/plugin/goblin-shelf.1.0.0.zip)

 * [Details](https://wordpress.org/plugins/goblin-shelf/#description)
 * [Reviews](https://wordpress.org/plugins/goblin-shelf/#reviews)
 *  [Installation](https://wordpress.org/plugins/goblin-shelf/#installation)
 * [Development](https://wordpress.org/plugins/goblin-shelf/#developers)

 [Support](https://wordpress.org/support/plugin/goblin-shelf/)

## Description

**Goblin Shelf** shows a bookcase with book spines on any page. Hover over a book
to see its cover, its author and its average rating; click it to open its card with
all the reviews.

 * **Anyone can review**: a visitor adds a book with a rating from 1 to 5 stars,“
   the best thing” and “the worst thing”. Reviews are published straight away, with
   no moderation.
 * **A bookcase with three shelves**: the modern bookcase has room for 33 books 
   on each shelf, 99 in total. When the shelves are full no more books can be added(
   the books on the shelves can still be reviewed). The limit is also a safeguard:
   if you turn on Open Library or Google Books, it caps the number of cover requests
   a visit can make to those services (never more than 99), so they are not overloaded
   and do not block your website.
 * **Search and sort**: by title, author, most recent reviews or best rated.
 * **Covers**: whoever adds a book can upload a photo of its cover from the form(
   optional), and the administrator can also choose one from the Media Library on
   the book screen. Without a cover the shelf shows only the spine. Optionally you
   can also turn on **Open Library** and/or **Google Books** (both **off by default**)
   in _Goblin Shelf  Settings  Book search_, so the form suggests books and covers
   while the person types. Covers from these services are **not copied** to your
   website: they are shown from the service’s own server.
 * **Translation ready**: Goblin Shelf follows the language of your website. It 
   is fully internationalized, so translations are provided by the community at 
   translate.wordpress.org.
 * **Privacy**: deleting the plugin deletes all its data. No name, email or account
   is asked for, and nothing about the visitor is stored except a temporary, scrambled(
   hashed) abuse counter that expires within one hour. By default no external service
   is contacted; the two optional book search services (Open Library and Google 
   Books) are off until you turn them on. Goblin Shelf adds a suggested text for
   your privacy policy in _Settings  Privacy  Policy Guide_.

#### How to use it

Goblin Shelf works with a **shortcode**: a short word between square brackets that
you type in a page, and that WordPress replaces with the bookshelf. The shortcode
is:

    ```
    [goblin_shelf]
    ```

 1. Go to _Pages  Add New Page_ and give the page a title.
 2. Click the **+** button, search for the **Shortcode** block and add it.
 3. Type `[goblin_shelf]` inside the block (with the square brackets, nothing else).
 4. Click _Publish_ and then _View Page_.

The same instructions, with a copy button for the shortcode, are in _Goblin Shelf
Settings  Help_.

#### Goblin Shelf Pro

Goblin Shelf Pro is a separate, paid plugin by the same developer. It adds: the 
Classic and Youthful styles, country and school years, reviews sent by email to 
the teacher, teachers’ recommendations, moderation, CSV import and export, control
over your data on uninstall, a library mode with recommended ages, filtering the
shelf by school year or age, approving reviews from the email with a private link,
an approval log, a reviews screen with filters and a button to delete all data. 
None of these features is included in this free plugin. They are described in _Goblin
Shelf  Settings  Pro_, which has a link to the developer’s website. You can get 
Goblin Shelf Pro at [goblindepartment.com/goblin_shelf](https://www.goblindepartment.com/goblin_shelf).
The same link appears as “Pro” next to the author in the list of plugins.

### External services

By default Goblin Shelf does **not** contact any external service. Two optional 
services can be turned on in _Goblin Shelf  Settings  Book search_. Both are **off
by default**:

 * **Open Library** (https://openlibrary.org, Internet Archive). Only if you turn
   on “Search for books and covers on Open Library”. When someone types the title
   of a book in the review form, that text is sent to Open Library from the browser
   of that person (and, as in any web request, the IP address of the visitor). The
   form tells the visitor about it. When a visitor chooses a book, only the identifier
   of its cover is saved. The cover is **not downloaded**: it is loaded from covers.
   openlibrary.org by the browser of each visitor, in the background shortly after
   the shelf is shown (so it is ready when the pointer reaches the book), as the
   Open Library cover guidelines ask, and that request also sends the visitor’s 
   IP address to Open Library. The plugin asks the browser not to send the address
   of your page with that request. A link back to Open Library is shown below the
   shelf. [Covers API guidelines](https://openlibrary.org/dev/docs/api/covers) ·
   [Terms and privacy](https://archive.org/about/terms.php)
 * **Google Books** (https://books.google.com). Only if you turn on “Search for 
   books and covers on Google Books”. The same search text and the IP address of
   the visitor are sent to Google. The cover found is not downloaded or stored either:
   it is shown from books.google.com, which means that the visitors who load the
   shelf also send their IP address to Google. Google’s terms do not allow keeping
   permanent copies of the content of its API, which is why the images are never
   saved on your website. The plugin includes the required attribution. [Terms of service](https://developers.google.com/books/terms)·
   [Google APIs terms](https://developers.google.com/terms) · [Google Privacy](https://policies.google.com/privacy)

Covers remain the property of their rights holders. Covers uploaded by visitors 
or chosen by the administrator are normal Media Library images and are stored on
your website.

If you turn them on, mention these services in the privacy policy of your website(
especially if your visitors are minors). Goblin Shelf adds a suggested text, adapted
to the services you have turned on, in _Settings  Privacy  Policy Guide_. If you
need to block external covers on the whole site (for example, while you wait for
consent), use the filter `goblinshelf_external_covers` (return `false`). To load
covers only when the pointer reaches a book instead of in the background, use `goblinshelf_preload_covers`(
return `false`).

The only other link to another website is the “Pro” link next to the author in the
list of plugins and the optional “Get Goblin Shelf Pro” button in _Goblin Shelf  
Settings  Pro_, which open the website of the developer when you click them.

### Credits

The images of the bookcase and the spines (folder `assets/img/`) were generated 
with ChatGPT (OpenAI) and are distributed under the same license as the plugin (
GPL v2 or later).

## Installation

 1. Upload the `goblin-shelf` folder to `/wp-content/plugins/`, or install the .zip
    from _Plugins  Add New  Upload Plugin_.
 2. Activate the plugin.
 3. Insert `[goblin_shelf]` in a page (use a _Shortcode_ block). Step by step instructions:
    _Goblin Shelf  Settings  Help_.

## FAQ

### How many books fit on the bookcase?

The bookcase has three shelves with room for 33 books each: 99 books. The number
comes from the real measurements of the modern bookcase: a shelf is about 1015 px
wide when the page is 1200 px wide, and a typical spine plus the gap between books
takes about 30 px. The bookcase is drawn so that 33 books always fit on a shelf,
whatever the width of the page. On narrow screens it keeps its proportions and is
scaled down to fit, with no sideways scrolling. The limit also has a second purpose:
with Open Library or Google Books turned on, the covers of the shelf are requested
from those services in the background, and the limit keeps that to 99 requests at
most per visit, which avoids overloading them and being blocked.

### What happens when the shelves are full?

No new book can be added: the form says so, the server refuses it, and a book created
in the dashboard stays as a draft. The books that are on the shelves can still be
reviewed. Delete a book (_Goblin Shelf  Goblin Shelf_) to make room.

### Are reviews moderated?

No. They are published as soon as they are sent. Protection against abuse: a hidden
field for bots and a limit of 30 reviews per hour from the same IP address (filter`
goblinshelf_ip_limit`). You can delete any book or review from the dashboard (_Goblin
Shelf  Goblin Shelf_ and _Goblin Shelf  Reviews_). If your website is behind a proxy
or a CDN, use the filter `goblinshelf_ip` to give the real IP of the visitor.

### Why does a book have no cover?

Covers are optional. When adding a book, the form lets you upload a photo of the
cover (JPG, PNG, WebP or GIF; it is reduced in the browser and checked again on 
the server). It is only used if the book has no cover yet. You can also open the
book in _Goblin Shelf  Goblin Shelf_ and choose or replace the image from your Media
Library. If you turn on Open Library or Google Books in _Goblin Shelf  Settings  
Book search_, the cover of the book chosen from the suggestions is shown straight
from that service. It is **not** downloaded or stored on your website (only a short
reference is saved), and it stops being shown if you turn the service off. You can
replace it at any time with an image from your Media Library.

### What data is stored?

For each book, its title, its author and optionally its cover (an image saved to
your Media Library); for each review, the rating, “the best thing” and “the worst
thing”. Nothing about the person who writes it. The visitor’s browser keeps locally(`
localStorage`) a list of the books already reviewed, only to warn about duplicates;
it contains no personal data and it is not sent anywhere. To limit abuse, a one-
way hash of the visitor’s IP address is kept in a temporary counter (a WordPress
transient) for up to one hour; the IP address itself is not saved. If you turn on
Open Library or Google Books, a cover chosen from the suggestions is saved only 
as a short reference (for example `ol:12345`), not as an image.

### How do I change the language?

Goblin Shelf uses the language of your website (_Settings  General  Site Language_).
Translations are provided by the community through translate.wordpress.org and are
installed by WordPress like any other plugin translation. The dashboard is shown
in the language of each user’s profile.

### What happens to my data if I delete the plugin?

**All the data of Goblin Shelf is permanently deleted** when you delete the plugin
from _Plugins  Installed plugins_ (deactivating it deletes nothing): the books, 
the reviews (also those in the trash), the cover images that Goblin Shelf saved 
to your Media Library (those uploaded from the form), the settings and the temporary
data. Images that you chose yourself from the Media Library are your own files and
are not deleted. This cannot be undone, so make a backup first if you want to keep
your books and reviews. If another Goblin Shelf plugin (for example Goblin Shelf
Pro) is installed, nothing is deleted, so you can switch from the free to the Pro
version without losing anything.

### I had more than 99 books (for example, from Goblin Shelf Pro)

Only the first 99 books (the oldest) are shown on the shelves.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Goblin Shelf: Book Reviews & Reading Lists” is open source software. The following
people have contributed to this plugin.

Contributors

 *   [ Goblin Department ](https://profiles.wordpress.org/goblindept/)

[Translate “Goblin Shelf: Book Reviews & Reading Lists” into your language.](https://translate.wordpress.org/projects/wp-plugins/goblin-shelf)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/goblin-shelf/), check
out the [SVN repository](https://plugins.svn.wordpress.org/goblin-shelf/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/goblin-shelf/) by
[RSS](https://plugins.trac.wordpress.org/log/goblin-shelf/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.0

 * First public release.
 * Modern bookcase with three shelves of 33 books, scaled down to fit narrow screens
   instead of showing a horizontal scrollbar.
 * Visitor reviews (1 to 5 stars, the best and the worst thing) published straight
   away, with a hidden field for bots and a limit per IP address.
 * Search and sort with unified controls: same height, typography and shape, full
   width on narrow screens.
 * Covers uploaded from the form or chosen from the Media Library.
 * Ready for translation through translate.wordpress.org.
 * Optional book and cover search on Open Library and Google Books, both off by 
   default (_Goblin Shelf  Settings  Book search_). Covers from these services are
   shown from their own servers and are never downloaded to your Media Library. 
   They are fetched in the background shortly after the shelf is shown, so they 
   are ready when the pointer reaches a book (filter `goblinshelf_preload_covers`
   to turn that off). The limit of 99 books also caps the number of requests to 
   those services.
 * Deleting the plugin deletes all its data (books, reviews, covers saved by Goblin
   Shelf, settings). Nothing is deleted if another Goblin Shelf plugin, such as 
   Goblin Shelf Pro, is installed.
 * Privacy: suggested privacy policy text (_Settings  Privacy  Policy Guide_), a
   notice in the form when a search service is on, and no page address sent with
   cover requests.
 * “Pro” link next to the author in the list of plugins and in the settings, to 
   get Goblin Shelf Pro.
 * _Settings  Pro_ describes the features of Goblin Shelf Pro, a separate paid plugin.
 * Light and fast: statistics are calculated with a single aggregate query, each
   review is saved in a single insert, reviews are fetched only when the pointer
   rests on a book, and the script loads with `defer`.

## Meta

 *  Version **1.0.0**
 *  Last updated **2 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.8 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [books](https://wordpress.org/plugins/tags/books/)[bookshelf](https://wordpress.org/plugins/tags/bookshelf/)
   [library](https://wordpress.org/plugins/tags/library/)[reviews](https://wordpress.org/plugins/tags/reviews/)
   [school](https://wordpress.org/plugins/tags/school/)
 *  [Advanced View](https://wordpress.org/plugins/goblin-shelf/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/goblin-shelf/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/goblin-shelf/reviews/)

## Contributors

 *   [ Goblin Department ](https://profiles.wordpress.org/goblindept/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/goblin-shelf/)