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

Tingkatkan komen WordPress anda dengan ciri yang disebutkan

Jennifer Aniston
Jennifer Anistonasal
2025-02-10 11:17:11349semak imbas

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

<code class="language-php"><?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
 */
?></code>

Plugin menggunakan wp_mention_plugin,

, dan
<code class="language-php">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();
?></code>
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:
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