programing

사용자 메타_key가 존재하는 경우 워드 프레스를 수행합니다.

telecom 2023. 10. 12. 21:49
반응형

사용자 메타_key가 존재하는 경우 워드 프레스를 수행합니다.

여러분 모두에게 쉬운 일이라고 확신하지만 저에게는 이 모든 것이 처음입니다.

기본적으로 로그인한 사용자가 자신의 프로필에 특정 메타데이터가 첨부되어 있으면 사이트에 특정 내용이 표시되는지 확인하고 싶습니다.

사용자의 메타데이터는 umeta_id, user_id, meta_key 및 meta_value가 포함된 wp_user 메타데이터 테이블에 저장됩니다.본질적으로 user_id에 'test'라는 이름의 meta_key가 있는지 확인해야 합니다.

get_user_meta() 함수는 알고 있지만 원하는 대로 작동할 수 없습니다.

global $current_user;

get_currentuserinfo(); // wordpress global variable to fetch logged in user info

$userID = $current_user->ID; // logged in user's ID
$havemeta = get_user_meta($userID, 'test', true); // stores the value of logged in user's meta data for 'test'.

if (isset($havemeta)){
    echo $havemeta;
} else {
    echo "No";
}

이 코드의 이론은 meta_key 'test'에 meta_value가 포함되어 있는지 확인하고, 만약 true이면 X가 Y를 하는지 확인하는 것입니다.불편한 점은 모든 사용자가 'test'라는 메타키를 가지고 있지 않다는 것입니다.따라서 로그인한 사용자가 이 메타키를 가지고 있지 않으면 코드가 작동하지 않습니다.또한 메타 키의 실제 값을 확인하고 싶지 않고(내가 신경 쓰는 모든 사용자에게 NULL일 수 있음), 로그인한 사용자에게 그러한 키가 존재하는지 알고 싶습니다.

무슨 생각 있어요?

워드프레스 >=3.3

제안된 해결책에는 주의해야 할 점이 있습니다: meta_key 값은false거짓 부정을 줄 것입니다

값이 다음과 같더라도 wordPress에 meta_key가 설정되어 있는지 묻습니다.false,사용하다metadata_exists:

if ( metadata_exists( 'user', $user_id, $meta_key ) ) {

   ...

}
if ($havemeta) { echo 'your stuff'; }

(TESTED) 만약 당신이true마지막 인수로, 문서에 따르면 메타데이터 필드의 값을 반환합니다.그 말은 당신이 그를false최후의 변론으로서

$havemeta = get_user_meta($userID, 'test', false);

그러면 다른 답변에서 말씀드린 것처럼 확인이 가능합니다.

if ($havemeta)
    echo $havemeta;
} else {
    echo "No";
}

언급URL : https://stackoverflow.com/questions/9108218/wordpress-if-usermeta-meta-key-exists-do-this

반응형