我想要显示一个模式,当用户登陆主页非常第一次

时间:2021-04-23 作者:Talha Arif

我想要的是,当用户第一次登陆主页时,我想显示一个特定的模式。我成功地记录了用户的首次登录,但我无法获得的是如何跟踪用户首次登录主页的情况,下面是跟踪用户首次登录的代码:

  add_action( \'wp_login\', \'track_user_logins\', 10, 2 );
   function track_user_logins( $user_login, $user ){
    if( $login_amount = get_user_meta( $user->id, \'login_amount\', true ) ){
    update_user_meta( $user->id, \'login_amount\', 0 );
     } else {
    // First Login, set it to 1
    update_user_meta( $user->id, \'login_amount\', 1 );
    }
    }

1 个回复
SO网友:Antti Koskinen

template_redirect 通常是挂接自定义回调的好操作,当您想有条件地为当前请求/视图添加或删除模板操作/部分,因为使用已确定,WP对象已设置,WP正在准备确定要加载的模板。

您可以使用此操作检查请求是否针对主页(首页)以及当前用户是否是第一次。这些信息可以保存为单独的用户元数据。比如像这样,

// use a custom callback to check and set home page first visit flag to user
add_action(\'template_redirect\', \'prefix_check_first_home_page_visit\', 1); // mind the priority
function prefix_check_first_home_page_visit() {
    // Is home page
    if ( ! is_front_page() ) {
        return;
    }
    
    // Get user
    $user = wp_get_current_user();
    
    // Only logged in users
    if ( ! $user->exists() ) {
        return;
    }

    // Get user meta for home page visit
    $visited_home_meta_key = \'home_page_first_visit\'; // change as needed
    $has_visited_home = get_user_meta(
        $user->ID,
        $visited_home_meta_key,
        true
    );

    // Check, if user has already visited home page
    if ( $has_visited_home ) {
        return;
    }

    // Save first visit to user meta
    update_user_meta(
        $user->ID,
        $visited_home_meta_key,
        time() // e.g. timestamp when the first visit happened, change as needed
    );

    // Trigger later action
    add_filter( \'is_home_page_first_visit\', \'__return_true\' );
}
我想到了上面,在第一次回调结束时使用了一个自定义过滤器来触发下面的回调,它负责将模式html添加到模板中。通过这种方式,代码被分成更小的部分,这使得以后更容易管理和更改。

// A separate function for enabling the modal
add_action(\'template_redirect\', \'prefix_show_home_page_first_visit_modal\', 10); // mind the priority
function prefix_show_home_page_first_visit_modal() {
    // Trigger modal printing conditionally
    if ( apply_filters( \'is_home_page_first_visit\', false ) ) {
        // Print the modal html to the site footer for example
        add_action(\'wp_footer\', \'prefix_render_home_page_first_visit_modal\');
    }
}

function prefix_render_home_page_first_visit_modal() {
    // Get template part or echo html here
}

相关推荐

Execute shortcodes in PHP

我在帖子编辑器中添加了一个地理位置快捷码,可以根据用户的位置显示不同的信息,将其放在帖子页面的内容中,效果非常好。如何在主题的PHP文件中执行此短代码[地理位置][地理位置]?我正在使用免费修改Wordpress主题,我想添加一个新的<span>[geolocation][/geolocation]Information text content</span> 但在主题的内部。php文件,我如何才能做到这一点?如果我直接加上<span>[geolocation][/ge