我有這個簡碼,它應該向用戶顯示上次登錄日期。我發現的問題是所有其他用戶都在查看我的上次登錄日期而不是他們的日期。
我對簡碼做錯了嗎?
// Last Login Shortcode
function user_last_login( $user_login, $user ) {
update_user_meta( $user->ID, 'last_login', date( current_time( 'timestamp' )) );
}
add_action( 'wp_login', 'user_last_login', 10, 2 );
function lastlogin() {
$last_login = get_the_author_meta('last_login');
$the_login_date = date('F j, Y, g:i a', $last_login);
return $the_login_date;
}
add_shortcode('lastlogin','lastlogin');
uj5u.com熱心網友回復:
我自己找到了解決方案。我為任何與我有同樣問題的人發布代碼。我還擴展了代碼,現在您可以獲得當前登錄日期和當前登錄之前的最后訪問日期。
我對這些東西不是很好,我在 php、wordpress 和一般代碼方面相對較新。我邀請任何人清理代碼并盡可能使其更短更容易。
將下面的代碼放在您的子主題的functions.php 檔案中。
// Function that set last login
add_action('wp_login', 'set_last_login', 0, 2);
function set_last_login($login, $user) {
$user = get_user_by('login',$login);
$time = current_time( 'timestamp' );
$last_login = get_user_meta( $user->ID, '_last_login', 'true' );
if(!$last_login) {
update_user_meta( $user->ID, '_last_login', $time );
} else {
update_user_meta( $user->ID, '_last_login_prev', $last_login );
update_user_meta( $user->ID, '_last_login', $time );
}
}
// Function that get last login
function get_last_login($user_id, $prev = null) {
$last_login = get_user_meta($user_id);
$time = current_time( 'timestamp' );
if(isset($last_login['_last_login_prev'][0]) && $prev) {
$last_login = get_user_meta($user_id, '_last_login_prev', 'true' );
} else if(isset($last_login['_last_login'][0])){
$last_login = get_user_meta($user_id, '_last_login', 'true' );
} else {
update_user_meta( $user_id, '_last_login', $time );
$last_login = $last_login['_last_login'][0];
}
return $last_login;
}
// Shortcode 1
function last_login_date() {
global $current_user;
echo '<p>Last login date: '. date("j M Y - H:i", get_last_login ($current_user->ID, true)) . '</p>';
}
add_shortcode('lastlogin', 'last_login_date');
// Shortcode 2
function current_login_date() {
global $current_user;
echo '<p>Current: Login date: '. date("j M Y - H:i", get_last_login($current_user->ID)). '</p>';
}
add_shortcode('currentlogin', 'current_login_date');
1.如果要顯示上次登錄日期(不是當前日期),請使用[lastlogin]
2.如果您想在每次新登錄時顯示當前日期,請使用[currentlogin] 。
如何更改日期和時間格式:您可以同時更改簡碼 1 和簡碼 2。隨意編輯"j M Y - H:i",這里有一些有用的資訊https://www.php.net/manual/en/datetime.format.php
抱歉英語不好
uj5u.com熱心網友回復:
感謝您的澄清。看起來您使用了錯誤的功能。
get_the_author_meta()檢索當前帖子作者的請求資料,因此如果您使用該功能,所有用戶都將顯示帖子作者的日期。
所以在你的情況下你需要使用get_user_meta()
你可以在這里找到資訊: https ://developer.wordpress.org/reference/functions/get_user_meta/
嘗試解決方案,如果它不起作用,我們將進一步挖掘。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/427973.html
