
{"id":5383,"date":"2016-07-02T03:43:22","date_gmt":"2016-07-02T03:43:22","guid":{"rendered":"http:\/\/tapchicntt.com\/?p=5383"},"modified":"2025-02-26T10:12:49","modified_gmt":"2025-02-26T03:12:49","slug":"cap-nhat-thoi-diem-lan-cuoi-dang-nhap-cua-user","status":"publish","type":"post","link":"https:\/\/tapchicntt.com\/cap-nhat-thoi-diem-lan-cuoi-dang-nhap-cua-user\/","title":{"rendered":"[WordPress] C\u1eadp nh\u1eadt th\u1eddi \u0111i\u1ec3m l\u1ea7n cu\u1ed1i \u0111\u0103ng nh\u1eadp c\u1ee7a user"},"content":{"rendered":"\n<p>N\u1ebfu c\u00e1c b\u1ea1n mu\u1ed1n n\u1eafm gi\u1eef th\u00f4ng tin v\u1ec1 th\u1eddi gian \u0111\u0103ng nh\u1eadp cu\u1ed1i c\u00f9ng c\u1ee7a c\u00e1c th\u00e0nh vi\u00ean (user) ho\u1ea1t \u0111\u1ed9ng tr\u00ean website hay blog c\u1ee7a c\u00e1c b\u1ea1n, b\u1ea1n c\u00f3 th\u1ec3 s\u1eed dung \u0111o\u1ea1n code m\u00e0 m\u00ecnh chia s\u1ebb trong b\u00e0i vi\u1ebft n\u00e0y.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>V\u1edbi \u0111o\u1ea1n code n\u00e0y, c\u00e1c b\u1ea1n ch\u1ec9 vi\u1ec7c copy v\u00e0 d\u00e1n n\u00f3 v\u00e0o file <strong>functions.php<\/strong> c\u00f3 s\u1eb5n trong folder theme m\u00e0 c\u00e1c b\u1ea1n \u0111ang d\u00f9ng:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">L\u01b0u th\u00f4ng tin<\/h2>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n\/\/ set the last login date\nadd_action(&#039;wp_login&#039;,&#039;set_last_login&#039;, 0, 2);\nfunction set_last_login($login, $user) {\n    $user = get_user_by(&#039;login&#039;,$login);\n    $time = current_time( &#039;timestamp&#039; );\n    $last_login = get_user_meta( $user-&gt;ID, &#039;_last_login&#039;, &#039;true&#039; );\n    if(!$last_login){\n    update_usermeta( $user-&gt;ID, &#039;_last_login&#039;, $time );\n    }else{\n    update_usermeta( $user-&gt;ID, &#039;_last_login_prev&#039;, $last_login );\n    update_usermeta( $user-&gt;ID, &#039;_last_login&#039;, $time );\n    }\n}\n\/\/ get last login date\nfunction get_last_login($user_id,$prev=null){\n  $last_login = get_user_meta($user_id);\n  $time = current_time( &#039;timestamp&#039; );\n  if(isset($last_login&#x5B;&#039;_last_login_prev&#039;]&#x5B;0]) &amp;&amp; $prev){\n          $last_login = get_user_meta($user_id, &#039;_last_login_prev&#039;, &#039;true&#039; );\n  }else if(isset($last_login&#x5B;&#039;_last_login&#039;]&#x5B;0])){\n          $last_login = get_user_meta($user_id, &#039;_last_login&#039;, &#039;true&#039; );\n  }else{\n    update_usermeta( $user_id, &#039;_last_login&#039;, $time );\n    $last_login = $last_login&#x5B;&#039;_last_login&#039;]&#x5B;0];\n  }\n  return $last_login;\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">Hi\u1ec3n th\u1ecb<\/h2>\n\n\n\n<p>\u0110\u1ec3 hi\u1ec3n th\u1ecb th\u00f4ng tin n\u00e0y, c\u00e1c b\u1ea1n ch\u1ec9 vi\u1ec7c copy \u0111o\u1ea1n code b\u00ean d\u01b0\u1edbi v\u00e0o v\u1ecb tr\u00ed m\u00e0 c\u00e1c b\u1ea1n mu\u1ed1n hi\u1ec3n th\u1ecb.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n\/\/ show last login date\n global $current_user;\n get_currentuserinfo();\n echo &#039;Previous: Login date: &#039; . date(&quot;Y-m-d h:m:s&quot;, get_last_login($current_user-&gt;ID,true)) . &#039;&#039;;\n echo &#039;Current: Login date: &#039; . date(&quot;Y-m-d h:m:s&quot;, get_last_login($current_user-&gt;ID)) . &#039;&#039;;\n<\/pre><\/div>\n\n\n<p>Ngo\u00e0i ra ,c\u00e1c b\u1ea1n c\u00f2n c\u00f3 th\u1ec3 so s\u00e1nh th\u1eddi gian \u0111\u0103ng nh\u1eadp l\u1ea7n cu\u1ed1i v\u1edbi th\u1eddi gian hi\u1ec7n t\u1ea1i \u0111\u1ec3 l\u1ea5y ra s\u1ed1 ng\u00e0y \u0111\u00e3 kh\u00f4ng online.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n\/\/ how many days since last login\n  global $current_user;\n  get_currentuserinfo();\n  $now = time();\n  $last_login = get_last_login($current_user-&gt;ID,true);\n  $datediff = $now - $last_login;\n  echo &#039;Days since last login: &#039; . floor($datediff\/(60*60*24)) . &#039; &#039;;\n<\/pre><\/div>\n\n\n<p>Ch\u00fac c\u00e1c b\u1ea1n th\u00e0nh c\u00f4ng!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>N\u1ebfu c\u00e1c b\u1ea1n mu\u1ed1n n\u1eafm gi\u1eef th\u00f4ng tin v\u1ec1 th\u1eddi gian \u0111\u0103ng nh\u1eadp cu\u1ed1i c\u00f9ng c\u1ee7a c\u00e1c th\u00e0nh vi\u00ean (user) [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":6979,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[143],"tags":[],"class_list":["post-5383","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-thu-thuat-wordpress"],"views":511,"_links":{"self":[{"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/posts\/5383","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/comments?post=5383"}],"version-history":[{"count":6,"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/posts\/5383\/revisions"}],"predecessor-version":[{"id":9570,"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/posts\/5383\/revisions\/9570"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/media\/6979"}],"wp:attachment":[{"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/media?parent=5383"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/categories?post=5383"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/tags?post=5383"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}