Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/justindouglas16/zilla-likes/archive/refs/heads/main.zipA modern, lightweight like button plugin for WordPress. Let visitors like your posts and pages with a single click — no account required.
Features
- Like / unlike toggle — users can like and unlike posts
- No jQuery dependency — vanilla JavaScript with optimistic UI updates
- REST API powered — clean endpoints with nonce-based security
- Batched hydration — a single API call loads all like states on page load, cache-friendly
- Persistent tracking — custom database table tracks likes per user (logged-in) or per IP (guests)
- Accessible — semantic
<button>elements witharia-labelattributes - Customizable — disable CSS, set postfix labels, exclude specific posts
- Widget included — display your most liked posts in any sidebar
- Shortcode & template tag — place the like button anywhere
Requirements
- WordPress 5.9+
- PHP 7.4+
Installation
- Download or clone this repository into
wp-content/plugins/zilla-likes/ - Activate the plugin through Plugins → Installed Plugins
- The database table is created automatically on activation
- Configure settings under Settings → ZillaLikes
Usage
Automatic
By default, the like button is appended to posts and pages automatically. Control this behavior in Settings → ZillaLikes.
Shortcode
Use the shortcode in any post or page editor:
[zilla_likes]
Target a specific post by ID:
[zilla_likes id="42"]
Template Tag
Place the like button directly in your theme templates:
<?php if (function_exists('zilla_likes')) zilla_likes(); ?>
Pass a specific post ID:
<?php zilla_likes(42); ?>
Settings
Navigate to Settings → ZillaLikes in the WordPress admin.
| Setting | Description |
|---|---|
| Add to posts | Automatically append the like button to single posts |
| Add to pages | Automatically append the like button to pages |
| Add to archives | Show on archive, home, search, and excerpt views |
| Exclude from | Comma-separated list of post/page IDs to skip |
| Disable CSS | Skip loading the bundled stylesheet for custom styling |
| Zero likes text | Label when a post has 0 likes (default: "Likes") |
| One like text | Label when a post has 1 like (default: "Like") |
| Multiple likes text | Label when a post has 2+ likes (default: "Likes") |
REST API
All endpoints are under the zilla-likes/v1 namespace. Nonce
authentication is handled automatically via X-WP-Nonce headers.
Toggle a like
POST /wp-json/zilla-likes/v1/like/{post_id}
Response:
{
"count": 5,
"liked": true,
"postfix": "Likes"
}
Get like state for a single post
GET /wp-json/zilla-likes/v1/likes/{post_id}
Response:
{
"count": 5,
"liked": false,
"postfix": "Likes"
}
Batch get like states
GET /wp-json/zilla-likes/v1/likes?ids=1,2,3
Response:
{
"1": { "count": 5, "liked": true, "postfix": "Likes" },
"2": { "count": 0, "liked": false, "postfix": "Likes" },
"3": { "count": 1, "liked": false, "postfix": "Like" }
}
Batch requests are capped at 100 IDs.
Widget
A ZillaLikes – Most Liked widget is available under Appearance → Widgets. It displays a ranked list of your most liked posts.
Widget options:
- Title — widget heading
- Description — optional text above the list
- Number of posts — how many to show (1–20)
- Show like count — display the count next to each post title
Custom Styling
Disable the built-in CSS in settings, then target these classes:
/* The button */
.zilla-likes { }
/* Liked state */
.zilla-likes.is-liked { }
/* Loading state (during API call) */
.zilla-likes.is-loading { }
/* The heart SVG */
.zilla-likes-icon { }
/* The numeric count */
.zilla-likes-count { }
/* The postfix label */
.zilla-likes-postfix { }
File Structure
zilla-likes/
├── zilla-likes.php # Plugin entry point and template tag
├── src/
│ ├── Plugin.php # Main plugin class, hooks, lifecycle
│ ├── Settings.php # Admin settings page and options
│ ├── LikeHandler.php # Like logic, DB queries, rendering
│ ├── RestApi.php # REST API endpoints
│ └── Widget.php # Most liked posts widget
├── assets/
│ ├── js/
│ │ └── zilla-likes.js # Vanilla JS – hydration, toggle, UI
│ └── css/
│ └── zilla-likes.css # Default button and animation styles
└── languages/ # Translation files
Uninstallation
When the plugin is deleted through the WordPress admin, it cleans up after itself:
- Drops the
wp_zilla_likesdatabase table - Removes the
zilla_likes_settingsoption - Deletes all
_zilla_likespost meta entries
License
GPLv2 or later.