코스모스팜 회원관리 플러그인 플로필 박스에 내용을 추가하고싶은데 어떻게 해야하나요?
로그아웃 옆에 빈칸에 myCRED의 등급을 추가하고싶습니다 php를 이용해서 숏코드를 추가하면 될거같은데 잘안되네요 ㅜ...
-------------------
추가적인 질문이있습니다
회원관리 플러그인을 사용안했을때는 myCRED에 따른 자동등업을 myCRED 홈페이지에서 본내용을 바탕으로 테마파일에 코드를 추가해서 사용했었습니다
이쪽의 문서를 참고하여 추가할경우 아래의 코드를 이용해서 User Role Editor로 생성한 운영진의 대표적인 'list_users' 역할을 'manage_options' 자리에 넣으면 해당 그룹은 포인트에 따른 자동등업이 무시되었습니다
https://mycred.me/code-snippets/change-role-based-on-balance/ 이쪽의 문서를 참고하여 추가하였습니다
// Exclude admins
if ( user_can( $request['user_id'], 'manage_options' ) ) return $reply;
하지만 회원관리 플러그인 같은경우 오로지 관리자만 등업이 무시되고있는거같은데 이걸 수정할수있는 방법은 없나요?
이 코드를 테마의 functions.php 파일에 추가하면 myCRED의 랭키를을 출력할 수 있습니다.
add_filter('wpmem_member_links_args', 'my_member_links_args', 99, 1);
function my_member_links_args($args){
$user_id = get_current_user_id();
$rank = mycred_get_users_rank($user_id);
if(is_object($rank)){
$args['rows'][] = sprintf('<li class="rank"><a href="#">%s(%s)</a></li>', $rank->title, $rank->count);
}
return $args;
}
http://codex.mycred.me/functions/mycred_get_users_rank/
이 코드를 테마의 functions.php 파일에 추가하면 사용자의 역할을 출력할 수 있습니다.
add_filter('wpmem_member_links_args', 'my_member_links_args', 99, 1);
function my_member_links_args($args){
$current_user = wp_get_current_user();
if($current_user->ID){
$args['rows'][] = sprintf('<li class="role"><a href="#">%s</a></li>', $current_user->roles[0]);
}
return $args;
}
추가로 주신 질문에 대한 답변은,
FTP로 접속해서 /wp-content/plugins/cosmosfarm-members/class/Cosmosfarm_Members_Mycred.class.php 파일을 수정해주세요.
if(user_can($user_id, 'activate_plugins')){
return $reply;
}
위 코드를 찾아서 그 아래 내용을 추가해주시면 될 듯합니다.
추후 필터 또는 액션을 추가해서 편리하게 수정할 수 있도록 업데이트 하겠습니다.
개별 회원마다 자동 등업 제외를 하시려면
워드프레스 관리자 -> 사용자 -> 모든 사용자 -> 사용자 편집 화면에서
자동 등업 제외를 체크 해주시면 됩니다.
고맙습니다.
혹시 첫번째 질문에서
이 코드를 테마의 functions.php 파일에 추가하면 myCRED의 랭키를을 출력할 수 있습니다.
add_filter('wpmem_member_links_args', 'my_member_links_args', 99, 1);
function my_member_links_args($args){
$user_id = get_current_user_id();
$rank = mycred_get_users_rank($user_id);
if(is_object($rank)){
$args['rows'][] = sprintf('<li class="rank"><a href="#">%s(%s)</a></li>', $rank->title, $rank->count);
}
return $args;
}
질문1. 이 코드를 삽입했을때 로그아웃을 오른쪽에 두고싶을땐 어떻게해야하나요?
질문2. 랭킹의 마크까지 노출시키고싶은데 어떤걸 건드려야될지 모르겠습니다
질문2를 응용해서 사용자가 'level0'등급일경우 워드프레스 파일저장소에있는 파일(이미지링크삽입)을 이용하고
'level0'이 아닐때에는 myCRED의 랭킹을 출력하고싶습니다
버튼의 위치는 순서의 문제라서요.
순서를 바꾸기 원하시면 플러그인 파일을 직접 수정하셔야 합니다.
FTP로 접속해서 /wp-content/plugins/cosmosfarm-members/class/Cosmosfarm_Members_Page_Builder.class.php 파일을 수정해주셔야 합니다.
아래 코드가 로그아웃 코드입니다.
$logout_url = wp_logout_url(wp_login_url());
$args['rows'][] ='<li class="logout"><a href="'.$logout_url.'">'.__('Log Out', 'cosmosfarm-members').'</a></li>';
로그아웃 코드 위에 랭킹 코드를 추가해보시겠어요?
$user_id = get_current_user_id();
$rank = mycred_get_users_rank($user_id);
if(is_object($rank)){
$args['rows'][] = sprintf('<li class="rank"><a href="#">%s(%s)</a></li>', $rank->title, $rank->count);
}
return $args;
또 아래 처럼 해보시면 랭킹 로고 이미지를 출력할 수 있습니다. 하지만 미리 로고 이미지가 설정되어 있어야 하나 봅니다.
$args['rows'][] = sprintf('<li class="rank"><a href="#">%s %s(%s)</a></li>', $rank->get_image('logo'), $rank->title, $rank->count);
아래 처럼 하시면 랭킹이 level0 등급일 경우 직접 <img> 태그와 이미지 주소를 작성할 수 있습니다.
$user_id = get_current_user_id();
$rank = mycred_get_users_rank($user_id);
if(is_object($rank)){
if($rank->title == 'level0'){
$args['rows'][] = sprintf('<li class="rank"><a href="#">%s %s(%s)</a></li>', '<img src="rank.png">', $rank->title, $rank->count);
}
else{
$args['rows'][] = sprintf('<li class="rank"><a href="#">%s %s(%s)</a></li>', $rank->get_image('logo'), $rank->title, $rank->count);
}
}
return $args;
아아 순서를 변경하려면 플러그인 파일자체를 수정해야되네요
그럼 테마에 이코드를 추가해서 랭킹이 나오게 출력됬다면
add_filter('wpmem_member_links_args', 'my_member_links_args', 99, 1);
function my_member_links_args($args){
$current_user = wp_get_current_user();
if($current_user->ID){
$args['rows'][] = sprintf('<li class="role"><a href="#">%s</a></li>', $current_user->roles[0]);
}
return $args;
}
이 코드는 어디에 추가해야지 가능한가요?
$user_id = get_current_user_id();
$rank = mycred_get_users_rank($user_id);
if(is_object($rank)){
if($rank->title == 'level0'){
$args['rows'][] = sprintf('<li class="rank"><a href="#">%s %s(%s)</a></li>', '<img src="rank.png">', $rank->title, $rank->count);
}
else{
$args['rows'][] = sprintf('<li class="rank"><a href="#">%s %s(%s)</a></li>', $rank->get_image('logo'), $rank->title, $rank->count);
}
}
return $args;
위치는 딱 어디라고 말씀드리가가 어렵고요.
왜냐하면 사정에 따라서 위치가 달라지겠지요.
우선 앞 답변과 동일하게 아래 로그아웃 버튼을 기준으로 전후에 추가를 해보시겠어요~?
$logout_url = wp_logout_url(wp_login_url());
$args['rows'][] ='<li class="logout"><a href="'.$logout_url.'">'.__('Log Out', 'cosmosfarm-members').'</a></li>';
그 테마 functions.php 파일에
add_filter('wpmem_member_links_args', 'my_member_links_args', 99, 1);
function my_member_links_args($args){
$current_user = wp_get_current_user();
if($current_user->ID){
$args['rows'][] = sprintf('<li class="role"><a href="#">%s</a></li>', $current_user->roles[0]);
}
return $args;
}
이 코드를 추가해서 등급표기가 가능했었는데 위치를 재설정하는게아니라
$user_id = get_current_user_id();
$rank = mycred_get_users_rank($user_id);
if(is_object($rank)){
if($rank->title == 'level0'){
$args['rows'][] = sprintf('<li class="rank"><a href="#">%s %s(%s)</a></li>', '<img src="rank.png">', $rank->title, $rank->count);
}
else{
$args['rows'][] = sprintf('<li class="rank"><a href="#">%s %s(%s)</a></li>', $rank->get_image('logo'), $rank->title, $rank->count);
}
}
return $args;
이 코드를 functions.php 파일에 추가한 코드에 어느부분에 추가를 해야될지 잘 모르겠습니다
플러그인 코드수정이아니라 functions.php 파일에 저 코드를 추가하려고합니다
지금 상태가 functions.php 파일에
add_filter('wpmem_member_links_args', 'my_member_links_args', 99, 1);
function my_member_links_args($args){
$current_user = wp_get_current_user();
if($current_user->ID){
$args['rows'][] = sprintf('<li class="role"><a href="#">%s</a></li>', $current_user->roles[0]);
}
return $args;
}
위의 코드를 삽입해서 등급이 표기되게 설정되있는데 위코드와 level0일때 이미지 주소 삽입코드를 합치려고할때 어떻게 수정해야될지 모르겠습니다
이렇게 해서 functions.php 파일에 추가해보시겠어요?
add_filter('wpmem_member_links_args', 'my_member_links_args', 99, 1);
function my_member_links_args($args){
$user_id = get_current_user_id();
$rank = mycred_get_users_rank($user_id);
if(is_object($rank)){
if($rank->title == 'level0'){
$args['rows'][] = sprintf('<li class="rank"><a href="#">%s %s(%s)</a></li>', '<img src="rank.png">', $rank->title, $rank->count);
}
else{
$args['rows'][] = sprintf('<li class="rank"><a href="#">%s %s(%s)</a></li>', $rank->get_image('logo'), $rank->title, $rank->count);
}
}
return $args;
}
자꾸 질문드려서 죄송합니다 ㅜㅜ
User Role Editor 플러그인으로 추가한 등급을 말씀드린거라서
rank 타이틀이아닌 if ( user_can( $request['user_id'], 'manage_options' ) ) return $reply; 이런식으로 유저의 역할이 정해져있을때는
이미지 링크를 불러와서 표시하고 'manage_options' 이 없는 나머지 유저들은 $args['rows'][] = sprintf('<li class="rank"><a href="#">%s %s(%s)</a></li>', $rank->get_image('logo'), $rank->title, $rank->count);
이거와같이 그 유저에맞는 랭크로고를 표시하고싶습니다
그럼 이렇게 해보시겠어요?
add_filter('wpmem_member_links_args', 'my_member_links_args', 99, 1);
function my_member_links_args($args){
$user_id = get_current_user_id();
$rank = mycred_get_users_rank($user_id);
if(is_object($rank)){
if(user_can($user_id, 'manage_options')){
$args['rows'][] = sprintf('<li class="rank"><a href="#">%s %s(%s)</a></li>', '<img src="rank.png">', $rank->title, $rank->count);
}
else{
$args['rows'][] = sprintf('<li class="rank"><a href="#">%s %s(%s)</a></li>', $rank->get_image('logo'), $rank->title, $rank->count);
}
}
return $args;
}
위 코드처럼 수정했더니 로고가 너무 크게 적용됩니다
manage_options에따른 로고는 잘나오는데 랭크로고는 너무 크게나옵니다