如何根据订户注册日期显示页面

时间:2011-11-23 作者:peterbz

我想获得一个滚动课程,根据订阅者注册的周数,向订阅者显示每周课程的新链接。

比方说,订阅者进入课程页面并显示如下示意图所示的内容。

http://imageshack.us/photo/my-images/845/coursedesignwordpress.png/

访客注册我的博客=第0周

我想用鼻涕虫来做这个。因此,我将创建一个带有“week-3”slug的页面,然后使用一些自定义PHP代码检查slug,并在课程页面上返回正确的slug。示例:

检查用户注册的时间(以周为单位)

  • 显示包含“slug-”$周的页面标题,但这有一个问题。I wouldn\'t be able to easily change the order of the lesson. Say for example, change lesson from week-3 to week-2.

    有什么简单的方法可以做到这一点,并能够轻松地更改本周的课程?

  • 1 个回复
    最合适的回答,由SO网友:Johannes Pille 整理而成

    考虑到wordpress提供的工具,您的任务相当简单。

    Step 1: wordpress不会自然记录用户在您的站点注册帐户的日期/时间。您必须手动添加这样的功能。将其保存到wp\\u usermeta表中是有意义的。

    看看phptime() 还有wordpressadd_user_meta() 功能。由于元数据必须在新用户注册时写入,因此应该触发时间戳,并添加user_register hook.

    Step 2, Option 1: 将当前时间与用户注册时间进行比较:

    $reg_time = get_user_meta($user_id, \'reg_time\', true); // dynamically insert user ID
    $week = intval( ceil( ( time() - $reg_time ) / 604800 ) )
    
    Step 2, Option 2: 如果您需要更复杂的事情每周发生在用户身上,您可以安排每周事件。这可以通过服务器外壳中的cronjobs直接完成,也可以通过wordpress本身完成。

    对于后一个选项,请查看wp_schedule_event().

    由于本机仅支持每小时、双日和每日事件,因此您必须添加自定义重复:

    function add_weekly_recurrence($schedules) {
        $schedules[\'weekly\'] = array(
            \'interval\'=> 604800,
            \'display\'=>  __(\'Once Every Week\')
        );
        return $schedules;
    }
    add_filter(\'cron_schedules\', \'add_weekly_recurrence\');
    
    新作业的调度也可能由以下操作触发user_register.

    Step 3. 现在您已经有了用户注册时间以及比较时间或安排每周事件的功能,最后您必须编写一个函数来实际定义显示的内容(并可能安排)。它必须将用户ID作为(它的)参数之一,如果选择选项2,它还应该增加周/课时,因此您可能还应该将用户当前的周/课时编号存储在wp\\u usermeta表中,并将其作为函数参数。

    完成。

    Further reading:

    Asides: 我怀疑每周上课对任何科目都是个好主意。就我个人而言,我讨厌不能以自己的速度前进,在我的过程中受到限制,无论我被教什么。

    结束

    相关推荐

    存档页面上的$NumPages和$max_Page之间的差异

    看了之后global $max_page; 和global $numpages; 在类别存档页上(is_archive() || $GLOBALS[\'wp_query\']->is_archive 正在返回true), 我看到以下返回值:$numpages: 4$max_page: 7这里发生了什么事?其他Qs:他们来自哪里?查看/wp includes/query之后。我找到的php$numpages 在里面setup_postdata(), 但beeing称为global 在顶部和后面,按通过