회원관리 플러그인 프로필 박스에 내용추가 질문

코스모스팜 회원관리 플러그인 플로필 박스에 내용을 추가하고싶은데 어떻게 해야하나요?

 

로그아웃 옆에 빈칸에 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에따른 로고는 잘나오는데 랭크로고는 너무 크게나옵니다

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기