
您现在的位置是:首页 > WordPress教程WordPress教程
WordPress试用期设置
WP集市
2025-09-09
【WordPress教程】
1626人已围观
-
先说WordPress试用期这事吧,本质上就是给用户或内容加个时间锁。比如你运营个会员站点,想让用户先白嫖三天,再决定付不付钱——这时候就得靠试用期逻辑来掐时间点了。WordPress本身没自带这功能,但咱能用插件和代码拼出来,下面我拆几种常见玩法。
-
最简单的路子是直接用会员插件。比如用Popular Memberships这种,装完在后台就能设试用期:
[membership_level id="1" trial_days="7"] 这儿放试用期才能看的内容 [/membership_level]
但注意啊,插件有时候会和其他功能打架,比如缓存插件可能让试用期时间计算抽风。
-
要是想自己写代码控制,先得钩住用户注册的时间点。在functions.php里加这段:
add_action('user_register', 'set_user_trial_period'); function set_user_trial_period($user_id) { $trial_end = strtotime('+3 days'); // 试用期3天 update_user_meta($user_id, 'trial_end_date', $trial_end); }
这样每个新用户注册时,自动存个到期时间戳到数据库里。
-
接下来要检查用户是不是在试用期内。再塞个函数:
function is_user_in_trial($user_id) { $end_date = get_user_meta($user_id, 'trial_end_date', true); if (empty($end_date)) return false; return time() < $end_date; }
用的时候直接
if (is_user_in_trial($user_id)) { ... }
就能做权限判断了。 -
但光这样还不够——万一用户试用到期得自动降权呢?得搞个定时检测:
add_action('wp', 'check_trial_expiration'); function check_trial_expiration() { if (!is_user_logged_in()) return; $user_id = get_current_user_id(); if (is_user_in_trial($user_id)) { $end_date = get_user_meta($user_id, 'trial_end_date', true); if (time() > $end_date) { // 把用户角色改成订阅者之类的低级权限 wp_update_user(array( 'ID' => $user_id, 'role' => 'subscriber' )); } } }
这个钩子会在每次页面加载时触发,虽然有点糙但管用。
-
如果想更精准,可以用WP Cron搞定时任务:
add_action('daily_trial_check', 'expire_trials_daily'); function expire_trials_daily() { $users = get_users(array( 'meta_key' => 'trial_end_date', 'meta_value' => time(), 'meta_compare' => '<' )); foreach ($users as $user) { wp_update_user(array( 'ID' => $user->ID, 'role' => 'subscriber' )); } }
// 记得激活定时任务 if (!wp_next_scheduled('daily_trial_check')) { wp_schedule_event(time(), 'daily', 'daily_trial_check'); }
这样每天自动查一次过期用户,比每次页面加载检查更省资源。
7. 前端显示试用期倒计时也挺重要。用短代码来实现:
```php
add_shortcode('trial_countdown', 'show_trial_countdown');
function show_trial_countdown() {
$user_id = get_current_user_id();
$end_date = get_user_meta($user_id, 'trial_end_date', true);
if (empty($end_date)) return "您不在试用期内";
$remaining = $end_date - time();
$days_left = floor($remaining / DAY_IN_SECONDS);
return "您的试用期剩余: " . $days_left . "天";
}
文章里直接插[trial_countdown]
就能显示倒计时。
-
最后提醒个坑:时间戳会受服务器时区影响。最好用WordPress的时区设置:
$timezone = get_option('timezone_string'); date_default_timezone_set($timezone);
塞在函数最前面避免时间计算跑偏。
-
其实试用期不只是用户权限控制,还能玩内容时效。比如让某些文章只在特定时间段显示:
$post_id = get_the_ID(); $trial_end = get_post_meta($post_id, 'trial_end', true); if ($trial_end && time() < $trial_end) { the_content(); } else { echo "试用期已结束,解锁全文需付费"; }
这样就能单篇文章设置试用时长。
-
总结下:WordPress搞试用期就是围绕时间元数据打组合拳。关键点就四个——注册时存时间戳、每次请求查状态、到期自动处理、前端反馈状态。别想太复杂,本质就是个带时间条件的if-else逻辑链。
(字数统计:约1200字)
Tags:
文章版权声明:除非注明,否则均为WP集市原创文章,转载或复制请以超链接形式并注明出处。
上一篇:WordPress会员计划升级
下一篇:WordPress退款处理流程

热门文章
