by Vijay parihar on WordPress.org
Add AJAX-powered Like and Dislike buttons to your posts & comments. A simple and lightweight way to boost user engagement.
The Post Engagement Widget provides a simple yet powerful way to gather user feedback on your content. With just a few clicks, you can add beautiful, AJAX-powered Like and Dislike buttons to your posts and comments, encouraging visitors to interact with your site.
The plugin is designed to be lightweight and easy to use. The settings panel gives you full control over colors, labels, and display rules, while the included shortcode allows you to place the voting buttons anywhere you want.
Key Features for Initial Release:
[engage_widgetment_widget] shortcode to manually place buttons on any page, product, or custom post type.We’ve included several hooks to allow you to extend the plugin’s functionality. Here are some examples of what you can do.
Filters
engage_widget_auto_display_post_types
Modify the list of post types where buttons are automatically displayed.
add_filter( 'engage_widget_auto_display_post_types', 'add_my_cpt_for_voting' );
function add_my_cpt_for_voting( $post_types ) {
// Add support for a 'portfolio' custom post type
$post_types[] = 'portfolio';
return $post_types;
}
engage_widget_render_buttons_html
Filter the final HTML of the buttons for posts.
add_filter( 'engage_widget_render_buttons_html', 'my_custom_post_buttons_wrapper', 10, 2 );
function my_custom_post_buttons_wrapper( $html, $post_id ) {
return '' . $html . '';
}
engage_widget_render_comment_buttons_html
Filter the final HTML of the buttons for comments.
add_filter( 'engage_widget_render_comment_buttons_html', 'my_custom_comment_buttons_wrapper', 10, 2 );
function my_custom_comment_buttons_wrapper( $html, $comment_object ) {
return '' . $html . '';
}
engage_widget_user_can_vote
Add custom permission logic to prevent a vote. Return false to block the vote.
add_filter( 'engage_widget_user_can_vote', 'prevent_voting_on_own_post', 10, 4 );
function prevent_voting_on_own_post( $permission, $item_type, $item_id, $user_id ) {
if ( $item_type === 'post' && $user_id > 0 ) {
if ( get_post_field( 'post_author', $item_id ) == $user_id ) {
return false; // Prevent users from voting on their own posts
}
}
return $permission;
}
Actions
engage_widget_after_vote_processed
Fire a custom action after a vote is successfully recorded.
add_action( 'engage_widget_after_vote_processed', 'my_custom_action_on_vote', 10, 4 );
function my_custom_action_on_vote( $item_type, $item_id, $vote, $user_id ) {
if ( $item_type === 'post' && $vote === 'like' ) {
// Example: Send a notification or update a transient
error_log( "User {$user_id} liked post {$item_id}." );
}
}
engage_widget_after_settings_fields
Add your own custom fields to the plugin’s settings page.
add_action( 'engage_widget_after_settings_fields', 'my_custom_engage_widget_setting' );
function my_custom_engage_widget_setting( $settings ) {
// HTML for your new setting field
}
You will also need to use the engage_widget_sanitize_settings filter to save your custom setting.
`