JavaScript Events
Front-end CustomEvents, AJAX payloads, button attributes, and analytics integration.
WP ULike fires CustomEvents on document (and jQuery-compatible events on buttons) when users vote, counters update, and toasts appear.
Add listeners in Settings → Developer Tools → JavaScript Snippets or your theme. Works with vanilla JS and jQuery.
For the underlying AJAX API, see Front-End AJAX.
Vote events
WordpressUlikeLoading
Fires when AJAX vote request starts.
document.addEventListener('WordpressUlikeLoading', function(event) {
var button = event.detail; // HTMLElement — the clicked button
button.classList.add('my-loading-state');
});
event.detail: the button element (HTMLElement).
WordpressUlikeUpdated
Fires when vote completes successfully.
document.addEventListener('WordpressUlikeUpdated', function(event) {
var button = event.detail;
var itemId = button.getAttribute('data-ulike-id');
var itemType = button.getAttribute('data-ulike-type');
var factor = button.getAttribute('data-ulike-factor'); // up | down
});
event.detail: the button element after DOM update.
Use for analytics, confetti, custom UI, or syncing external state.
WordpressUlikeCounterUpdated
Fires when the counter number changes in the DOM.
document.addEventListener('WordpressUlikeCounterUpdated', function(event) {
var button = event.detail[0]; // HTMLElement
// Counter text is inside .count-box or template-specific selector
});
event.detail: array — [buttonElement].
WordpressUlikeLikersMarkupUpdated
Fires when likers box HTML refreshes.
document.addEventListener('WordpressUlikeLikersMarkupUpdated', function(event) {
var likersEl = event.detail[0];
var templateType = event.detail[1]; // popover, inline, pile, modal
var content = event.detail[2]; // HTML string
});
Toast events
Require Enable Toast Notices under General settings.
WordpressUlikeNotificationAppend
document.addEventListener('WordpressUlikeNotificationAppend', function(event) {
var messageEl = event.detail.messageElement;
});
WordpressUlikeRemoveNotification
document.addEventListener('WordpressUlikeRemoveNotification', function(event) {
var messageEl = event.detail.messageElement;
});
Toasts also reflect server messages from AJAX response: message, messageType (success, info, warning, error).
Tooltip events (likers popover)
ulf-show / ulf-hide
document.addEventListener('ulf-show', function(event) {
var tooltip = event.detail.tooltip;
});
document.addEventListener('ulf-hide', function(event) {
// event.target — element that triggered hide
});
tooltip-content-updated
document.addEventListener('tooltip-content-updated', function(event) {
var wrapper = event.detail.element;
var content = event.detail.content;
});
tooltip-request-data
Fires when tooltip needs likers data — hook for custom data sources.
Button data attributes
Every vote button exposes:
| Attribute | Example | Purpose |
|---|---|---|
data-ulike-id | 123 | Item ID |
data-ulike-type | post | Content type |
data-ulike-nonce | abc123 | CSRF nonce |
data-ulike-template | wpulike-heart | Template slug |
data-ulike-factor | up / down | Like vs dislike |
CSS classes during interaction
| Class | When |
|---|---|
wp_ulike_is_loading | AJAX in progress |
wp_ulike_btn_is_active | User has voted (active state) |
wp_ulike_general_class | Wrapper for WordpressUlike init |
wp_ulike_put_image | Image-based button |
Global script params
wp_ulike_params.ajax_url // admin-ajax.php
wp_ulike_params.notifications // boolean — toasts enabled
wp_ulike_params.ajax_error // default connection error string
Vote action: action=wp_ulike_process — see Front-End AJAX.
AJAX response fields (for custom integrations)
When hooking into vote completion via PHP filter wp_ulike_ajax_respond, the JSON includes:
| Field | Description |
|---|---|
status | 1–5 status code (see AJAX doc) |
message | User-facing text |
messageType | Toast type |
btnText | Updated button label |
data | Counter value string |
likers.template | Likers HTML if requested |
hasToast | Whether to show toast |
requireLogin | true when login needed |
Failed votes return messageType: "error" with exception message.
Example — Google Analytics 4
document.addEventListener('WordpressUlikeUpdated', function(event) {
var el = event.detail;
if (typeof gtag === 'undefined' || !el) return;
gtag('event', 'vote', {
item_id: el.getAttribute('data-ulike-id'),
item_type: el.getAttribute('data-ulike-type'),
vote_factor: el.getAttribute('data-ulike-factor')
});
});
jQuery compatibility
jQuery(document).on('WordpressUlikeUpdated', function(event, data) {
console.log('Vote completed', data);
});
jQuery('.wp_ulike_btn').on('WordpressUlikeCounterUpdated', function(event, data) {
console.log('Counter updated on this button', data);
});
Event summary
| Event | When | event.detail |
|---|---|---|
WordpressUlikeLoading | AJAX starts | HTMLElement button |
WordpressUlikeUpdated | Vote succeeds | HTMLElement button |
WordpressUlikeCounterUpdated | Counter DOM update | [button] |
WordpressUlikeLikersMarkupUpdated | Likers refresh | [el, type, html] |
WordpressUlikeNotificationAppend | Toast shown | { messageElement } |
WordpressUlikeRemoveNotification | Toast removed | { messageElement } |
ulf-show / ulf-hide | Tooltip toggle | tooltip or target |
tooltip-content-updated | Tooltip HTML set | { element, content } |
tooltip-request-data | Tooltip fetch | varies |
Pro forms and social login use separate front-end scripts — vote events above apply to like buttons only.
PHP side: Hooks & Filters · Snippets: Developer Tools & Scripts
Related articles
Continue with these guides
Did this article help?
Pick how you feel, add a note if you want, then hit Send. It takes two seconds and helps us improve this guide.