현재 로그인된 사용자 목록(워드 프레스)
현재 로그인한 사용자 목록을 표시하는 방법이 있습니까?
이상적으로 그들의 이름과 그라바타를 보여줄 것입니다.
개인적으로 session_tokens 메타 키를 사용하여 사용자가 온라인 상태인지(또는 실행 중인 세션이 있는지) 확인합니다.
$aUsers = get_users([
'meta_key' => 'session_tokens',
'meta_compare' => 'EXISTS'
]);
세션이 실행 중인 사용자 목록이 나타납니다.그러면 출력에 사용할 수 있습니다.
echo sprintf(
'Users online: %s',
implode(', ', array_map(function($oUser){
return get_avatar( $oUser->ID, 96 ) . '<span class="username">'$oUser->display_name.'</span>';
}, $aUsers))
);
마지막 비트의 코드를 수정하면 세션 IP 주소를 표시할 수도 있습니다.
echo sprintf(
'Users online: %s',
implode(', ', array_map(function($oUser){
$aCurrentSessions = get_user_meta($oUser->ID, 'session_tokens', true);
return get_avatar( $oUser->ID, 96 ) . '<span class="username">'$oUser->display_name.'</span> (' .
implode('; ', array_map(function($aSession) {
return $aSession['ip']; // only return the session ips
}, $aCurrentSessions)) . ')';
}, $aUsers))
);
워드프레스에는 이것을 위한 기능이 내장되어 있지 않지만, 당신은 직접 그것을 쉽게 추가할 수 있습니다.예를 들어 wp_login hook을 사용하여 각 사용자의 마지막 로그인 시간을 저장할 수 있습니다.그런 다음 최근 30분 이내에 로그인한 사용자를 온라인으로 나열할 수 있습니다.
add_action('wp_login', 'store_last_login', 10, 2);
function store_last_login($current_user) {
global $current_user;
get_currentuserinfo();
$user = $current_user->user_login;
update_user_meta($current_user->ID, 'last_login', current_time('mysql', 1));
}
그런 다음 지난 20분 이내에 로그인한 사용자(또는 선택한 기간에 상관없이)를 다음과 같은 방법으로 반향할 수 있습니다.
function list_online_users() {
$users = get_users( 'blog_id=1' );
foreach ($users as $online) {
$getLastLogin = (get_user_meta($online->ID, 'last_login', true));
$lastLogin = new DateTime($getLastLogin);
$since_start = $lastLogin->diff(new DateTime(current_time('mysql', 1)));
$minutesSinceLogin = $since_start->i;
// this will list every user and whether they logged in within the last 30 minutes
if ($minutesSinceLogin > 30 ) {
echo '<li>'.$online->user_login . ' is offline </li>';
} else {
echo '<li>'.$online->user_login . ' is online </li>';
}
}
}
플러그인을 사용하지 않으려면 다음 작업을 쉽게 수행할 수 있습니다.
1/ 기능에 추가합니다.사용자가 연결 또는 연결 해제할 때 사용자 메타를 추가하거나 제거하는 php 파일:
function add_user_logged_meta(){
$user = wp_get_current_user();
update_user_meta($user->ID, 'asdb-loggedin', true);
}
// user connects
add_action('init','add_user_logged_meta');
function delete_user_logged_meta() {
$user = wp_get_current_user();
update_user_meta($user->ID, 'asdb-loggedin', false);
}
// user disconnects
add_action('clear_auth_cookie', 'delete_user_logged_meta');
2/ 템플릿(functions.php에서도 함수를 만들 수 있음)에서 로그인한 모든 사용자를 표시하려면 일부 메타 쿼리 매개 변수와 함께 내장된 word press get_users()를 사용하십시오.
$loggedin_users = get_users([
'meta_key' => 'asdb-loggedin',
'meta_value' => '1',
'meta_compare' => '='
]);
foreach( $loggedin_users as $loggedin_user ){
echo $loggedin_user->user_login;
}
1)함수 뒤에 wp_users 테이블 2)에서 enum('1', '0')을 사용하여 'status'로 명명된 추가 필드에 작성합니다.php 다음 코드를 입력합니다.
<?php
function add_session_mitesh()
{
global $wpdb;
if(is_user_logged_in())
{
$user_id = get_current_user_id();
$wpdb->query("UPDATE wp_users SET `status` = '1' WHERE `wp_users`.`ID` = $user_id;");
}
$user_id;
}
add_action('init','add_session_mitesh');
function delete_session_mitesh() {
global $wpdb;
if(is_user_logged_in())
{
$user_id = get_current_user_id();
$wpdb->query("UPDATE wp_users SET `status` = '0' WHERE `wp_users`.`ID` = $user_id;");
}
$user_id;
}
add_action('wp_logout', 'delete_session_mitesh');
?>
사용할 수 있는 현재 로그인 사용자를 나열합니다.
<?php $users=$wpdb->get_results( 'SELECT * FROM wp_users where status='1'', 'ARRAY_A');
<table width="100%" border="2px" style="text-align: center;">
<?php
foreach( $users as $g )
{
?>
<tr><td style="text-align: center;"> <center> <?php echo $g['user_login'] ?> </center></td>
</tr>
<?php } ?>
</p>
</table>
다음과 같은 방법으로 현재 로그인된 사용자를 얻을 수 있습니다.
$current_user = wp_get_current_user(); echo 'Username: ' . $current_user->user_login . '<br />'; echo 'User email: ' . $current_user->user_email . '<br />'; echo 'User first name: ' . $current_user->user_firstname . '<br />'; echo 'User last name: ' . $current_user->user_lastname . '<br />'; echo 'User display name: ' . $current_user->display_name . '<br />'; echo 'User ID: ' . $current_user->ID . '<br />'; ?>
id 이 $current_user 변수는 이 변수에서 가져올 수 있는 배열 및 개체에서 모든 사용자 세부 정보를 찾을 수 있습니다.
언급URL : https://stackoverflow.com/questions/21928355/list-currently-logged-in-users-wordpress
'source' 카테고리의 다른 글
파이썬 내부 수업의 목적은 무엇입니까? (0) | 2023.09.11 |
---|---|
셸에서 XPath 한 줄을 실행하는 방법? (0) | 2023.09.11 |
mysql 오류:테이블 "mysql".innodb_table_stats"를 찾을 수 없습니다. (0) | 2023.09.11 |
@PropertySource 주석을 사용할 때 값이 확인되지 않았습니다.PropertySourcesPlaceholderConfigurer을 구성하는 방법은 무엇입니까? (0) | 2023.09.06 |
href 요소에서 클릭 이벤트를 트리거하는 방법 (0) | 2023.09.06 |