안녕하세요! 제가 하고 싶은 건 usermeta에서 meta key가 team인 것들의 value들 (team의 이름을 사용자 정의 필드로 이런 식으로 저장했어그 )
value1
<meta_value = value1을 가지는 것들의 nicename(wp_users테이블)>
이런식으로 쭉 출력하고 싶습니다..
아래와 같이
add_shortcode('printcode', 'print_teammember');
function print_teammember(){
global $wpdb;
echo 'team_member_list';
$sql = "SELECT * FROM {$wpdb->prefix}wp_usermeta WHERE meta_key='team'";
$results = $wpdb->get_results($sql);
$teamname = array();
$count = 0;
foreach($results as $result){
$teamname[i] = $result->meta_value;
}
$teamname = array_unique($teamname);
for($i=0;$i<count($teamname);$i++) {
echo $teamname[i];
$sql2 = "SELECT * FROM {$wpdb->prefix}wp_usermeta WHERE meta_key='team' and meta_value=$teamname[i] ";
$results2 = $wpdb->get_results($sql2);
foreach($results2 as $result2){
echo 'checkcode';
$id = $result2->user_id;
$uname = "SELECT user_nicename FROM {$wpdb->prefix}wp_users WHERE ID=$id";
echo $uname;
echo ' ';
}
}
}
1. key가 team인 것들의 value를 배열에 저장.
2. 그 배열의 값을 이용해 user테이블의 nicename가져오기
아는 게 없어서 복잡하게 만들었는데...출력이 안됩니다.... 혹시 어디가 틀린지 아신다면 답변 부탁드립니다 흑흑
안녕하세요~^^
워드프레스 usermeta 테이블에서 meta key가 team이면서 meta value 별로 표시하고 싶으신 건지요?
간단하게 예제 코드를 작성해봤습니다.
아래 코드를 활용해보시겠어요?
add_shortcode('printcode', 'print_teammember');
function print_teammember(){
global $wpdb;
$html = '';
$html .= '<h3>team_member_list</h3>';
$meta_value_list = $wpdb->get_results("SELECT DISTINCT `meta_value` FROM `{$wpdb->prefix}usermeta` WHERE `meta_key`='team';");
foreach($meta_value_list as $meta_value){
$html .= '<h5>'.$meta_value->meta_value.'</h5>';
$user_id_list = $wpdb->get_results("SELECT `user_id` FROM `{$wpdb->prefix}usermeta` WHERE `meta_key`='team' AND `meta_value`='{$meta_value->meta_value}'");
foreach($user_id_list as $user_id){
$user = new WP_User($user_id->user_id);
$html .= $user->user_nicename;
}
}
return $html;
}
워드프레스 숏코드 관련 내용은
아래의 링크를 참고해보세요.
https://codex.wordpress.org/Shortcode_API
wpdb에 대한 자세한 내용은
아래의 링크를 참고해보세요.
https://codex.wordpress.org/Class_Reference/wpdb
추가로 코드를 수정하실 때 디버그 모드를 활성화하시면
에러 메시지를 확인해보실 수 있습니다.
디버그 모드 활성화 방법은 아래의 링크를 참고해보세요.
고맙습니다.