WP_LOGIN操作挂接不起作用

时间:2013-06-02 作者:whiteletters in blankpapers

我花了很多时间寻找我的问题的解决方案,但都没有成功。你的帮助是无价的。

我正在创建一个简化的徽章系统。目标是增加用户在网站上执行某些操作时的徽章数量。例如,对于每个发布的帖子,我都会给用户一个徽章。

为此,我选择了用户元数据,并使用publish\\u post操作挂钩。

在我的functions.php, 我说:

function publish_badge($post_ID) {

   global $current_user; 
   get_currentuserinfo();

   $number_of_badges = get_user_meta($current_user->id,\'user_number_of_badges\',true);
   $number_of_badges = $number_of_badges + 1;
   update_user_meta($current_user->id, \'user_number_of_badges\', $number_of_badges);
   return $post_ID;             
}
add_action(\'publish_post\', \'publish_badge\');
我对使用Wordpress动作挂钩是个新手,我花了很多时间让它工作起来。我知道我遗漏了一些东西,因为对于其他挂钩,问题仍然存在。

注意,我总共有4个操作,我想为用户提供更多徽章:publish\\u post、edit\\u post、wp\\u login、comment\\u post。

非常感谢您一如既往的帮助。

Edit:

我找到了除了wp\\u登录之外的所有钩子的解决方案,事实上,我正在使用自定义的帖子类型,所以我应该更改我的钩子名称。换句话说,publish\\u post将成为publish\\u cpt。

如何使用wp\\U登录??

    function login_badge($user_login) {
    global $current_user; 

    get_currentuserinfo();
 $number_of_badges= get_user_meta($current_user->id,\'user_number_of_badges2\',true);
   $number_of_badges= $number_of_badges +5;

  update_user_meta($current_user->id, \'user_number_of_badges2\', $number_of_badges);

    }


add_action(\'wp_login\', \'login_badge\');
感谢您抽出时间。

1 个回复
最合适的回答,由SO网友:Charles Clarkson 整理而成

你可能遇到了一个问题$current_user->id 自WordPress 2.1以来已被弃用。具体而言,我在错误日志中得到了以下通知:

Notice: 调用WP\\u User->id时使用的参数自版本2.1以来已被弃用!改用WP\\u User->ID。在/xxx/xxx/public\\u html/wordpress/wp中包含/函数。php第2923行。

使用$current_user->ID 相反或者您可以使用get_current_user_id():

add_action( \'wp_login\', \'login_badge\' );
function login_badge( $user_login ) {
    if ( get_user_meta( get_current_user_id(), \'user_number_of_badges2\', true ) )
        update_user_meta( get_current_user_id(), \'user_number_of_badges2\', get_user_meta( get_current_user_id(), \'user_number_of_badges2\', true ) + 5 );
}
Edit: 还可以尝试:

function login_badge( $login ) {

    $user = get_userdatabylogin($login);

    $number_of_badges= get_user_meta($user->ID,\'user_number_of_badges2\',true);
    $number_of_badges= $number_of_badges + 30;

    update_user_meta($user->ID, \'user_number_of_badges2\', $number_of_badges);
}
add_action( \'wp_login\', \'login_badge\' );

结束

相关推荐

WordPress多站点本地:wp-login.php登录Chrome浏览器刷新

我刚刚在本地机器上设置了Wordpress Multisitethis 辅导的当我尝试使用Google Chrome登录管理员时,页面会刷新。我尝试过Firefox,我能够正常登录和使用Wordpress Multisite,并访问仪表板。我尝试过清除缓存,并在谷歌Chrome中使用匿名模式,以确保这不是缓存问题。以下是我登录的步骤:我导航到http://dev-server/wp-admin</我被重定向到http://dev-server/wp-login.php?redirect_to=htt