Rumah > Tutorial CMS > WordTekan > Tingkatkan komen WordPress anda dengan ciri yang disebutkan

Tingkatkan komen WordPress anda dengan ciri yang disebutkan

Jennifer Aniston
Lepaskan: 2025-02-10 11:17:11
asal
344 orang telah melayarinya

Tutorial ini menunjukkan membina plugin WordPress yang menambah ciri @mention seperti Twitter ke komen. Pengguna boleh menandakan antara satu sama lain, meningkatkan interaksi komen.

Enhance Your WordPress Comments with a Mention Feature

Ciri -ciri Utama:

  • @mention Functionity: Plugin membolehkan pengguna menandakan pengulas lain menggunakan simbol "@", sama dengan Twitter.
  • Pemberitahuan e -mel:
  • Pengguna yang disebutkan menerima makluman e -mel mengenai komen baru. Integrasi WordPress WordPress: dengan lancar dengan sistem penyederhanaan komen WordPress.
  • Penyesuaian: mudah menyesuaikan warna teks @mention dan tetapan lain.
  • Pembangunan plugin:

Plugin, , tinggal di direktori . Header plugin sangat penting untuk pengiktirafan WordPress:

wp-mention-plugin.php Fungsi teras dikemas dalam kelas /wp-content/plugins/:

<?php
/**
 * Plugin Name: WP Mention Plugin
 * Plugin URI: https://sitepoint.com
 * Description: Mention registered and unregistered comment authors.
 * Version: 1.0.0
 * Author: John Doe
 * Author URI: https://sitepoint.com
 * License: GPLv2
 */
?>
Salin selepas log masuk

Plugin menggunakan wp_mention_plugin,

, dan
class wp_mention_plugin {

    public static function initialize() {
        add_filter( 'comment_text', array( 'wp_mention_plugin', 'wpmp_mod_comment' ) );
        add_action( 'wp_set_comment_status', array( 'wp_mention_plugin', 'wpmp_approved' ), 10, 2 );
        add_action( 'wp_insert_comment', array( 'wp_mention_plugin', 'wpmp_no_approve' ), 10, 2 );
    }

    public static function wpmp_mod_comment( $comment ) {
        $color_code = '#00BFFF'; // Deep sky blue
        $pattern = "/(^|\s)@(\w+)/";
        $replacement = "<span style='color:$color_code;'>@</span>"; //Style the mention
        $mod_comment = preg_replace( $pattern, $replacement, $comment );
        return $mod_comment;
    }

    private static function wpmp_send_mail( $comment ) {
        $the_related_post = $comment->comment_post_ID;
        $the_related_comment = $comment->comment_ID;
        $the_related_post_url = get_permalink( $the_related_post );
        $the_related_comment_url = get_comment_link( $the_related_comment );

        $the_comment = $comment->comment_content;
        $pattern = "/(^|\s)@(\w+)/";

        if ( preg_match_all( $pattern, $the_comment, $match ) ) {
            foreach ( $match[2] as $m ) {
                $email_owner_name[] = preg_replace( '/@/', '', $m );
            }

            if ( preg_match_all( '/\w+__\w+/', implode( '', $email_owner_name ) ) ) {
                $email_owner_name = str_ireplace( '__', ' ', $email_owner_name );
            }

            $author_emails = array_map( 'self::wpmp_gen_email', $email_owner_name );

            if ( ! is_null( $author_emails ) ) {
                $subj = '[' . get_bloginfo( 'name' ) . '] You were mentioned in a comment!';
                $email_body = "You were mentioned in a comment!  See it here: $the_related_comment_url\n\nRelated Post: $the_related_post_url";
                wp_mail( $author_emails, $subj, $email_body );
            }
        }
    }

    public static function wpmp_gen_email( $name ) {
        global $wpdb;
        $name = sanitize_text_field( $name );
        $query = "SELECT comment_author_email FROM {$wpdb->comments} WHERE comment_author = %s";
        $prepare_email_address = $wpdb->prepare( $query, $name );
        return $wpdb->get_var( $prepare_email_address );
    }

    public static function wpmp_approved( $comment_id, $status ) {
        $comment = get_comment( $comment_id, OBJECT );
        ( $comment && $status == 'approve' ? self::wpmp_send_mail( $comment ) : null );
    }

    public static function wpmp_no_approve( $comment_id, $comment_object ) {
        ( wp_get_comment_status( $comment_id ) == 'approved' ? self::wpmp_send_mail( $comment_object ) : null );
    }
}

$wp_mention_plugin = new wp_mention_plugin;
$wp_mention_plugin->initialize();
?>
Salin selepas log masuk
cangkuk untuk menguruskan sebutan dan pemberitahuan. Ingatlah untuk menggantikan

dengan nama laman web anda di badan e -mel. comment_text wp_set_comment_status wp_insert_comment "MyBlog.com" Versi yang dipertingkatkan ini secara langsung menggayakan sebutan dalam teks komen, memberikan pengalaman yang lebih mesra pengguna. Pemberitahuan e -mel juga bertambah baik untuk kejelasan. Ingatlah untuk mengendalikan kesilapan yang berpotensi (mis., Tidak ada e -mel yang dijumpai) dalam persekitaran pengeluaran.

Atas ialah kandungan terperinci Tingkatkan komen WordPress anda dengan ciri yang disebutkan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan