코스모스팜 회원관리 플러그인 플로필 박스에 내용을 추가하고싶은데 어떻게 해야하나요?
로그아웃 옆에 빈칸에 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;
}
위 코드를 찾아서 그 아래 내용을 추가해주시면 될 듯합니다.
추후 필터 또는 액션을 추가해서 편리하게 수정할 수 있도록 업데이트 하겠습니다.
개별 회원마다 자동 등업 제외를 하시려면
워드프레스 관리자 -> 사용자 -> 모든 사용자 -> 사용자 편집 화면에서
자동 등업 제외를 체크 해주시면 됩니다.
고맙습니다.
그럼 이렇게 해보시겠어요?
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;
}
자꾸 질문드려서 죄송합니다 ㅜㅜ
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);
이거와같이 그 유저에맞는 랭크로고를 표시하고싶습니다
이렇게 해서 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;
}
그 테마 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일때 이미지 주소 삽입코드를 합치려고할때 어떻게 수정해야될지 모르겠습니다
위치는 딱 어디라고 말씀드리가가 어렵고요.
왜냐하면 사정에 따라서 위치가 달라지겠지요.
우선 앞 답변과 동일하게 아래 로그아웃 버튼을 기준으로 전후에 추가를 해보시겠어요~?
$logout_url = wp_logout_url(wp_login_url());
$args['rows'][] ='<li class="logout"><a href="'.$logout_url.'">'.__('Log Out', 'cosmosfarm-members').'</a></li>';
아아 순서를 변경하려면 플러그인 파일자체를 수정해야되네요
그럼 테마에 이코드를 추가해서 랭킹이 나오게 출력됬다면
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;
버튼의 위치는 순서의 문제라서요.
순서를 바꾸기 원하시면 플러그인 파일을 직접 수정하셔야 합니다.
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;
혹시 첫번째 질문에서
이 코드를 테마의 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의 랭킹을 출력하고싶습니다
위 코드처럼 수정했더니 로고가 너무 크게 적용됩니다
manage_options에따른 로고는 잘나오는데 랭크로고는 너무 크게나옵니다