at path:
ROOT
/
wp-content
/
plugins
/
jetpack
/
modules
/
comment-likes.php
run:
R
W
Run
canonical-urls
DIR
2026-04-17 06:07:59
R
W
Run
carousel
DIR
2026-04-17 06:07:59
R
W
Run
comment-likes
DIR
2026-04-17 06:07:59
R
W
Run
comments
DIR
2026-04-17 06:07:59
R
W
Run
custom-post-types
DIR
2026-04-17 06:07:59
R
W
Run
external-media
DIR
2026-04-17 06:07:59
R
W
Run
google-fonts
DIR
2026-04-17 06:07:59
R
W
Run
gravatar
DIR
2026-04-17 06:07:59
R
W
Run
infinite-scroll
DIR
2026-04-17 06:07:59
R
W
Run
likes
DIR
2026-04-17 06:07:59
R
W
Run
markdown
DIR
2026-04-17 06:07:59
R
W
Run
memberships
DIR
2026-04-17 06:07:59
R
W
Run
photon-cdn
DIR
2026-04-17 06:07:59
R
W
Run
plugin-search
DIR
2026-04-17 06:07:59
R
W
Run
post-by-email
DIR
2026-04-17 06:07:59
R
W
Run
related-posts
DIR
2026-04-17 06:07:59
R
W
Run
scan
DIR
2026-04-17 06:07:59
R
W
Run
seo-tools
DIR
2026-04-17 06:07:59
R
W
Run
sharedaddy
DIR
2026-04-17 06:07:59
R
W
Run
shortcodes
DIR
2026-04-17 06:07:59
R
W
Run
simple-payments
DIR
2026-04-17 06:07:59
R
W
Run
site-icon
DIR
2026-04-17 06:07:59
R
W
Run
sitemaps
DIR
2026-04-17 06:07:59
R
W
Run
stats
DIR
2026-04-17 06:07:59
R
W
Run
subscriptions
DIR
2026-04-17 06:07:59
R
W
Run
theme-tools
DIR
2026-04-17 06:07:59
R
W
Run
tiled-gallery
DIR
2026-04-17 06:07:59
R
W
Run
verification-tools
DIR
2026-04-17 06:07:59
R
W
Run
videopress
DIR
2026-04-17 06:07:59
R
W
Run
widget-visibility
DIR
2026-04-17 06:07:59
R
W
Run
widgets
DIR
2026-04-17 06:07:59
R
W
Run
woocommerce-analytics
DIR
2026-04-17 06:07:59
R
W
Run
wordads
DIR
2026-04-17 06:07:59
R
W
Run
wpcom-tos
DIR
2026-04-17 06:07:59
R
W
Run
account-protection.php
369 By
2026-04-17 06:07:59
R
W
Run
Delete
Rename
blaze.php
1.03 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
blocks.php
1.82 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
canonical-urls.php
2.46 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
carousel.php
612 By
2026-04-17 06:07:59
R
W
Run
Delete
Rename
comment-likes.php
8.04 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
comments.php
1.08 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
contact-form.php
798 By
2026-04-17 06:07:59
R
W
Run
Delete
Rename
copy-post.php
15.43 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
custom-content-types.php
4 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
google-fonts.php
554 By
2026-04-17 06:07:59
R
W
Run
Delete
Rename
gravatar-hovercards.php
11.9 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
infinite-scroll.php
8.25 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
json-api.php
503 By
2026-04-17 06:07:59
R
W
Run
Delete
Rename
latex.php
4.66 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
likes.php
20.35 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
markdown.php
1.04 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
module-extras.php
2.69 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
module-headings.php
44.61 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
module-info.php
27.27 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
monitor.php
3.56 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
notes.php
7.88 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
photon-cdn.php
12.69 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
photon.php
698 By
2026-04-17 06:07:59
R
W
Run
Delete
Rename
plugin-search.php
21.6 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
post-by-email.php
676 By
2026-04-17 06:07:59
R
W
Run
Delete
Rename
post-list.php
570 By
2026-04-17 06:07:59
R
W
Run
Delete
Rename
protect.php
609 By
2026-04-17 06:07:59
R
W
Run
Delete
Rename
publicize.php
3.76 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
related-posts.php
2.27 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
search.php
1.18 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
seo-tools.php
1.6 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
sharedaddy.php
1.06 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
shortcodes.php
6.45 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
shortlinks.php
4.46 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
simple-payments.php
421 By
2026-04-17 06:07:59
R
W
Run
Delete
Rename
sitemaps.php
1.3 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
sso.php
743 By
2026-04-17 06:07:59
R
W
Run
Delete
Rename
stats.php
43.15 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
subscriptions.php
34.47 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
theme-tools.php
2.47 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
tiled-gallery.php
1.12 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
vaultpress.php
1.8 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
verification-tools.php
899 By
2026-04-17 06:07:59
R
W
Run
Delete
Rename
videopress.php
989 By
2026-04-17 06:07:59
R
W
Run
Delete
Rename
waf.php
309 By
2026-04-17 06:07:59
R
W
Run
Delete
Rename
widget-visibility.php
558 By
2026-04-17 06:07:59
R
W
Run
Delete
Rename
widgets.php
2.8 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
woocommerce-analytics.php
928 By
2026-04-17 06:07:59
R
W
Run
Delete
Rename
wordads.php
632 By
2026-04-17 06:07:59
R
W
Run
Delete
Rename
wpcom-reader.php
461 By
2026-04-17 06:07:59
R
W
Run
Delete
Rename
wpgroho.js
1.93 KB
2026-04-17 06:07:59
R
W
Run
Delete
Rename
error_log
up
📄
comment-likes.php
Save
<?php //phpcs:ignore WordPress.Files.FileName.InvalidClassFileName /** * Module Name: Comment Likes * Module Description: Enable visitors to like individual comments and boost engagement. * Sort Order: 39 * Recommendation Order: 17 * First Introduced: 5.1 * Requires Connection: Yes * Auto Activate: No * Module Tags: Social * Additional Search Queries: like widget, like button, like, likes * * @package automattic/jetpack */ use Automattic\Jetpack\Assets; if ( ! defined( 'ABSPATH' ) ) { exit( 0 ); } Assets::add_resource_hint( '//widgets.wp.com', 'dns-prefetch' ); require_once __DIR__ . '/likes/jetpack-likes-master-iframe.php'; require_once __DIR__ . '/likes/jetpack-likes-settings.php'; /** * Jetpack Comment Like Class */ class Jetpack_Comment_Likes { /** * Jetpack_Likes_Settings object * * @var Jetpack_Likes_Settings */ public $settings; /** * Blog ID * * @var int */ public $blog_id; /** * Site home URL domain * * @var string */ public $domain; /** * Initialize comment like module */ public static function init() { static $instance = null; if ( ! $instance ) { $instance = new Jetpack_Comment_Likes(); } return $instance; } /** * Construct comment like module. */ private function __construct() { $this->settings = new Jetpack_Likes_Settings(); $this->blog_id = Jetpack_Options::get_option( 'id' ); $url_parts = wp_parse_url( home_url() ); // Abort if domain can't be determined. if ( ! $url_parts || ! isset( $url_parts['host'] ) ) { return; } $this->domain = $url_parts['host']; add_action( 'template_redirect', array( $this, 'frontend_init' ) ); add_action( 'admin_init', array( $this, 'admin_init' ) ); if ( ! Jetpack::is_module_active( 'likes' ) ) { $active = Jetpack::get_active_modules(); if ( in_array( 'publicize', $active, true ) && ! in_array( 'sharedaddy', $active, true ) ) { // we have a sharing page but not the global options area. add_action( 'pre_admin_screen_sharing', array( $this->settings, 'sharing_block' ), 20 ); add_action( 'pre_admin_screen_sharing', array( $this->settings, 'updated_message' ), -10 ); } if ( ! in_array( 'sharedaddy', $active, true ) ) { add_action( 'admin_init', array( $this->settings, 'process_update_requests_if_sharedaddy_not_loaded' ) ); add_action( 'sharing_global_options', array( $this->settings, 'admin_settings_showbuttonon_init' ), 19 ); add_action( 'sharing_admin_update', array( $this->settings, 'admin_settings_showbuttonon_callback' ), 19 ); add_action( 'admin_init', array( $this->settings, 'add_meta_box' ) ); } else { add_filter( 'sharing_meta_box_title', array( $this->settings, 'add_likes_to_sharing_meta_box_title' ) ); add_action( 'start_sharing_meta_box_content', array( $this->settings, 'meta_box_content' ) ); } add_action( 'save_post', array( $this->settings, 'meta_box_save' ) ); add_action( 'edit_attachment', array( $this->settings, 'meta_box_save' ) ); add_action( 'sharing_global_options', array( $this->settings, 'admin_settings_init' ), 20 ); add_action( 'sharing_admin_update', array( $this->settings, 'admin_settings_callback' ), 20 ); } } /** * Initialize admin section */ public function admin_init() { add_filter( 'manage_edit-comments_columns', array( $this, 'add_like_count_column' ) ); add_action( 'manage_comments_custom_column', array( $this, 'comment_likes_edit_column' ), 10, 2 ); add_action( 'admin_print_styles-edit-comments.php', array( $this, 'enqueue_admin_styles_scripts' ) ); } /** * Displays number of comment likes in comment admin page. * * @param string $column_name name of the column. * @param int $comment_id ID of the comment. */ public function comment_likes_edit_column( $column_name, $comment_id ) { if ( 'comment_likes' !== $column_name ) { return; } $permalink = get_permalink( get_the_ID() ); ?> <a data-comment-id="<?php echo absint( $comment_id ); ?>" data-blog-id="<?php echo absint( $this->blog_id ); ?>" class="comment-like-count" id="comment-like-count-<?php echo absint( $comment_id ); ?>" href="<?php echo esc_url( $permalink ); ?>#comment-<?php echo absint( $comment_id ); ?>" > <span class="like-count">0</span> </a> <?php } /** * Enqueue admin style scripts. */ public function enqueue_admin_styles_scripts() { wp_enqueue_style( 'comment-like-count', plugins_url( 'comment-likes/admin-style.css', __FILE__ ), array(), JETPACK__VERSION ); wp_enqueue_script( 'comment-like-count', Assets::get_file_url_for_environment( '_inc/build/comment-likes/comment-like-count.min.js', 'modules/comment-likes/comment-like-count.js' ), array( 'jquery' ), JETPACK__VERSION, false ); } /** * Adds like count column to admin page. * * @param array $columns column of admin table. */ public function add_like_count_column( $columns ) { $columns['comment_likes'] = '<span class="vers"></span>'; return $columns; } /** * Initialize front end */ public function frontend_init() { if ( class_exists( Jetpack_AMP_Support::class ) && Jetpack_AMP_Support::is_amp_request() ) { return; } add_action( 'wp_enqueue_scripts', array( $this, 'load_styles_register_scripts' ) ); add_filter( 'comment_text', array( $this, 'comment_likes' ), 10, 2 ); } /** * Load styling scripts */ public function load_styles_register_scripts() { if ( ! $this->settings->is_likes_visible() ) { return; } if ( ! wp_style_is( 'open-sans', 'registered' ) ) { wp_register_style( 'open-sans', 'https://fonts.googleapis.com/css?family=Open+Sans', array(), JETPACK__VERSION ); } wp_enqueue_style( 'jetpack_likes', plugins_url( 'likes/style.css', __FILE__ ), array( 'open-sans' ), JETPACK__VERSION ); wp_enqueue_script( 'jetpack_likes_queuehandler', plugins_url( 'likes/queuehandler.js', __FILE__ ), array(), JETPACK__VERSION, true ); } /** * Display like count. * * @param string $content text content of the comment itself. * @param object $comment comment object containing comment data. */ public function comment_likes( $content, $comment = null ) { if ( empty( $comment ) ) { return $content; } if ( ! $this->settings->is_likes_visible() ) { return $content; } $comment_id = get_comment_ID(); if ( empty( $comment_id ) && ! empty( $comment->comment_ID ) ) { $comment_id = $comment->comment_ID; } if ( empty( $content ) || empty( $comment_id ) ) { return $content; } if ( empty( $comment->comment_approved ) ) { return $content; } // In case master iframe hasn't been loaded. This could be the case when Post Likes module is disabled, // or on pages on which we have comments but post likes are disabled. if ( false === has_action( 'wp_footer', 'jetpack_likes_master_iframe' ) ) { add_action( 'wp_footer', 'jetpack_likes_master_iframe', 21 ); } $uniqid = uniqid(); $src = sprintf( 'https://widgets.wp.com/likes/#blog_id=%1$d&comment_id=%2$d&origin=%3$s&obj_id=%1$d-%2$d-%4$s', $this->blog_id, $comment_id, $this->domain, $uniqid ); $name = sprintf( 'like-comment-frame-%1$d-%2$d-%3$s', $this->blog_id, $comment_id, $uniqid ); $wrapper = sprintf( 'like-comment-wrapper-%1$d-%2$d-%3$s', $this->blog_id, $comment_id, $uniqid ); $html = ''; $html .= "<div class='jetpack-comment-likes-widget-wrapper jetpack-likes-widget-unloaded' id='$wrapper' data-src='$src' data-name='$name'>"; $html .= "<div class='likes-widget-placeholder comment-likes-widget-placeholder comment-likes'><span class='loading'>" . esc_html__( 'Loading...', 'jetpack' ) . '</span></div>'; $html .= "<div class='comment-likes-widget jetpack-likes-widget comment-likes'><span class='comment-like-feedback'></span>"; $html .= "<span class='sd-text-color'></span><a class='sd-link-color'></a>"; $html .= '</div></div>'; /** * Filters the Comment Likes button content. * * @module comment-likes * * @since 5.1.0 * * @param string $html Comment Likes button content. */ $like_button = apply_filters( 'comment_like_button', $html ); return $content . $like_button; } } Jetpack_Comment_Likes::init();