一文搞懂WordPress关注作者功能:建站公司拖一周?这招直接上手
一文搞懂WordPress关注作者功能:建站公司拖一周?这招直接上手
改个需求建站公司拖一周?你不是一个人!WordPress关注作者功能看似简单,但如果你不懂技术细节,搞不好要花几天时间和外包团队磨合。这篇文章就是为那些想一文搞懂WordPress关注作者的甲方对接人准备的,不绕弯子,直接上干货。
各自定位
WordPress作为全球最流行的内容管理系统,其插件生态非常丰富,用户可以通过插件实现很多功能,包括“关注作者”。这个功能主要适用于内容平台、自媒体、知识分享类网站,用户可以通过关注作者,获得更精准的内容推送,同时也能提升作者的影响力和用户粘性。
在实际开发中,这个功能的实现有两种主流方式:使用插件(如Followers、Subscribe2等)和自定义开发(通过代码实现关注逻辑)。两者各有优劣,适用于不同场景,本文将对比这两种方式,并提供具体的实现方法。
核心差异对比
| 对比维度 | 使用插件实现关注作者 | 自定义开发实现关注作者 |
|---|---|---|
| 实现难度 | 简单,无需编程基础,适合非技术人员使用 | 中等,需要了解PHP、数据库结构和WordPress钩子系统 |
| 功能灵活性 | 功能固定,扩展性有限 | 可高度定制,支持个性化功能(如关注提醒、积分系统) |
| 性能影响 | 轻量,对网站性能影响小 | 视代码质量而定,可能增加数据库负载 |
| 安全性 | 插件有更新和维护,但部分插件存在安全风险 | 自定义开发可控性强,但需注意SQL注入、XSS等漏洞 |
| 成本 | 免费插件可用,部分高级插件需付费 | 开发成本高,适合有长期维护需求的项目 |
| 维护成本 | 插件更新后可能有兼容性问题 | 自定义开发需长期维护,依赖开发团队支持 |
| 用户体验 | 插件功能统一,但交互方式可能不够美观 | 可完全控制UI/UX,适配品牌调性 |
| 适用场景 | 个人博客、小型内容站、对功能无特殊要求的网站 | 企业官网、内容平台、需要定制关注功能的项目 |
代码/配置写法对比
使用插件实现关注作者(以Subscribe2插件为例)
步骤1:安装插件
- 登录WordPress后台;
- 进入“插件” > “安装插件”;
- 搜索“Subscribe2”;
- 安装并激活插件。
步骤2:配置插件
- 进入“订阅2”插件设置页面;
- 启用“显示关注按钮”选项;
- 设置订阅邮件通知规则(可选);
- 可以自定义订阅按钮的文本、位置、样式(部分版本支持)。
注意:部分插件不支持直接在作者资料页显示“关注”按钮,需在主题中添加短代码。
短代码示例(在文章中插入关注按钮):
[subscribe2]
自定义开发实现关注作者
如果你需要完全控制关注逻辑,可以使用自定义代码实现。
功能目标:
- 用户点击“关注”按钮,将当前用户ID与目标作者ID记录到数据库中;
- 禁止重复关注;
- 支持在作者资料页显示“已关注”或“关注”按钮;
- 可选择发送邮件通知(可选)。
步骤1:添加关注按钮到作者资料页(functions.php中添加)
function custom_author_follow_button() {if ( is_author() ) {$current_user = wp_get_current_user();$author_id = get_queried_object_id();$is_following = is_user_logged_in() && check_user_follows_author( $current_user->ID, $author_id );?><div class="author-follow-button"><?php if ( $is_following ) : ?><button class="unfollow-btn" data-author-id="<?php echo esc_attr( $author_id ); ?>">取消关注</button><?php else : ?><button class="follow-btn" data-author-id="<?php echo esc_attr( $author_id ); ?>">关注作者</button><?php endif; ?></div><?php}
}
add_action( 'author_archive_content', 'custom_author_follow_button' );
步骤2:实现关注逻辑(functions.php中添加)
function check_user_follows_author( $user_id, $author_id ) {global $wpdb;$table_name = $wpdb->prefix . 'user_follows';$result = $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM $table_name WHERE user_id = %d AND author_id = %d",$user_id, $author_id));return $result > 0;
}function handle_author_follow() {if ( !is_user_logged_in() || !isset( $_POST['author_id'] ) ) {wp_send_json_error( '未登录或参数错误' );}$user_id = get_current_user_id();$author_id = intval( $_POST['author_id'] );$is_following = check_user_follows_author( $user_id, $author_id );global $wpdb;$table_name = $wpdb->prefix . 'user_follows';if ( $is_following ) {$wpdb->delete( $table_name, array( 'user_id' => $user_id, 'author_id' => $author_id ) );wp_send_json_success( '已取消关注' );} else {$wpdb->insert( $table_name, array('user_id' => $user_id,'author_id' => $author_id,'date_followed' => current_time('mysql')) );wp_send_json_success( '关注成功' );}
}
add_action( 'wp_ajax_handle_author_follow', 'handle_author_follow' );
add_action( 'wp_ajax_nopriv_handle_author_follow', 'handle_author_follow' );
步骤3:添加JS交互(在主题JS中添加)
document.addEventListener('DOMContentLoaded', function () {const followBtns = document.querySelectorAll('.follow-btn');const unfollowBtns = document.querySelectorAll('.unfollow-btn');followBtns.forEach( btn => {btn.addEventListener('click', function () {const authorId = this.getAttribute('data-author-id');fetch(ajaxurl, {method: 'POST',headers: {'Content-Type': 'application/x-www-form-urlencoded'},body: 'action=handle_author_follow&author_id=' + authorId}).then( res => res.json() ).then( data => {if (data.success) {this.innerText = '已关注';this.classList.remove('follow-btn');this.classList.add('unfollow-btn');}});});});unfollowBtns.forEach( btn => {btn.addEventListener('click', function () {const authorId = this.getAttribute('data-author-id');fetch(ajaxurl, {method: 'POST',headers: {'Content-Type': 'application/x-www-form-urlencoded'},body: 'action=handle_author_follow&author_id=' + authorId}).then( res => res.json() ).then( data => {if (data.success) {this.innerText = '关注作者';this.classList.remove('unfollow-btn');this.classList.add('follow-btn');}});});});
});
步骤4:创建用户关注表(通过数据库迁移插件如WP CLI或自定义SQL)
CREATE TABLE wp_user_follows (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,user_id INT NOT NULL,author_id INT NOT NULL,date_followed DATETIME NOT NULL,UNIQUE KEY user_author (user_id, author_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
适用场景
使用插件实现关注作者
- 适合内容型网站、个人博客、小型自媒体;
- 需求简单,不需要高度定制;
- 不具备开发能力或预算有限;
- 优先考虑插件维护更新频率、用户评价等指标。
自定义开发实现关注作者
- 适合需要高度定制功能的网站(如积分系统、邮件通知、后台管理);
- 有长期维护需求,需开发团队支持;
- 对UI/UX要求高,希望与品牌调性完全一致;
- 有性能优化、安全加固等额外需求。
选型建议
小型项目或个人博客
选择插件方式即可。比如使用Subscribe2或Followers插件,简单易用,且不影响网站性能。这种方案适合预算有限、没有专业开发团队的用户,推荐优先考虑。
中大型项目或企业官网
建议自定义开发。虽然开发成本高,但可实现高度定制化功能,如关注提醒、数据统计、积分系统、后台管理等。推荐有开发团队或外包资源的公司采用此方案。
混合方案
如果你对插件功能不满意,但又不想投入大量开发成本,可以采用混合方案:先使用插件实现基本功能,之后逐步替换为自定义开发模块。例如,先用插件处理关注逻辑,之后自行开发关注提醒、关注统计等功能。
结尾互动钩子
你踩过哪些建站的坑?评论区交流!