WP ULike
Get Pro

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:

AttributeExamplePurpose
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

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

FieldDescription
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

EventWhenevent.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

Continue with these guides