[jp_post_view]
5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 글쓴이
  • #9449
    mimoon
    키 마스터

      bbpress의 프로파일을 메뉴로 집어 넣기

      
      /**
      	 * Generate BBpress Edit Profile Link in a shortcode
      	 *
      	 * @param $atts, text|class
      	 * @example 
      	 * @return string|void
      	 *
      	 */
      	function bbp_edit_profile_link( $atts ) {
      		
      		//If user isn't logged in, return nothing
      		if(!is_user_logged_in()) {
      			return;
      		} else {
      			
      			extract( shortcode_atts( array(
      				                         'text'  => "",  // default value if none supplied
      				                         'class' => "" //Style class for link
      			                         ), $atts ) );
      			
      			if ( $text ) {
      				$current_user = wp_get_current_user();
      				$user         = $current_user->user_login;
      				
      				return '<a class="' . $class . '" href="/forums/users/' . $user . '/edit">' . $text . '</a>';
      				
      			}
      		}
      	}
      	
      	add_shortcode( 'bbp_edit_profile', 'bbp_edit_profile_link' );
      
      #9450
      mimoon
      키 마스터

        응용: 메뉴 상에서는 링크만 구현되고 메뉴 이름을 ID/Name으로 표현할 수가 없음(menu shortcode이든 사용자 정의이든). Function.php에서 아예 응용을 함. 링크 텍스트를 비워두는 숏코드를 구현함으로 그 빈 곳에 대표 이름(display_name) 채우기.

        
        		/**
        	 * Generate BBpress Get Profile Link in a shortcode
        	 *
        	 * @param $atts2, text|class
        	 * @example 
        	 * application: if text empty show display_name
        	 * @return string|void
        	 *
        	 */
        function bbp_get_profile_link( $atts2 ) {
        //If user isn't logged in, return nothing
        		if(!is_user_logged_in()) {
        			return;
        		} else {
        			extract( shortcode_atts( array(
        				                         'text'  => "",  // default value if none supplied
        				                         'class' => "" //Style class for link
        			                         ), $atts2 ) );
        			if ( $text ) {
        				$current_user = wp_get_current_user();
        				$user         = $current_user->user_login;
        				return '<a href="' . bbp_get_user_profile_url($current_user->ID). '">' . $text . '</a>';
        			} else {
        				$current_user = wp_get_current_user();
        				//$user         = $current_user->user_login;
        				$display_name = $current_user->display_name;
        				return '<a href="' . bbp_get_user_profile_url($current_user->ID). '">' .'&#x26EF; '. $display_name. '</a>';
        			}
        
        		}
        	}
        	add_shortcode( 'bbp_get_profile', 'bbp_get_profile_link' );
        
        
        #9581
        YOUNG JIN LEE
        키 마스터

          프로필 에딧 페이지로 진입하는 메뉴를 User Role로 보여주는 방법
          아래 숏코드에서 text가 비어 있으면 User Role, 채워져 있으면 채운 그 텍스트가 메뉴
          이때 li 태그는 테마에 따라 적용이 안될 수 있음. mimoon에서는 적용됨(닫는 /li는 넣지 않고 열어둔 상태로 마칠 것).

          
          /**
          * Generate BBpress Edit Profile Link in a shortcode
          *
          * @param $atts, text|class
          * @example 
          * application: if text empty show user_role
          * @return string|void
          *
          */
          	function bbp_edit_profile_link( $atts ) {
          		
          		//If user isn't logged in, return nothing
          		if(!is_user_logged_in()) {
          			return;
          		} else {			
          			extract( shortcode_atts( array(
          				                         'text'  => "",  // default value if none supplied
          				                         'class' => "" //Style class for link
          			                         ), $atts ) );
          			
          			if ( $text ) {
          				$current_user = wp_get_current_user();
          				$user         = $current_user->user_login;
          				return '<a class="' . $class . '" href="/forums/users/' . $user . '/edit">' . $text . '</a>';
          			} else {
          				$current_user = wp_get_current_user();
          				$user         = $current_user->user_login;
          				//$user_meta = get_userdata($user_id);
          				//$user_roles = $user_meta->roles;
          				/*$current_user = wp_get_current_user();
          				$allowed_roles = explode(',', $role);
          				if( array_intersect($allowed_roles, $current_user->roles ) ) {
          					return $content;
          				} else {
          					$user_role = array_shift($current_user->roles);
          					return '<a class="' . $class . '" href="/forums/users/' . $user . '/edit">' . $user_role  . '</a>';
          				}
          				*/
          				$user_meta = get_userdata(get_current_user_id());
          				//$current_user_role_slug = $user_meta->roles[0];
          				$user_roles = $user_meta->roles;
          				$user_role = array_shift($user_roles);
          				if ($user_role == 'administrator') {
          					$current_user_role_slug = 'Administrator';
          					$emoti ='&#9822;';
          				} elseif ($user_role == 'editor') {
          					$current_user_role_slug = 'Editor';
          					$emoti ='&#9822;';
          				} elseif ($user_role == 'author') {
          					$current_user_role_slug = 'Author';
          					$emoti ='&#9822;';
          				} elseif ($user_role == 'contributor') {
          					$current_user_role_slug = 'Contributor';
          					$emoti ='&#9816;';
          				} elseif ($user_role == 'subscriber') {
          					$current_user_role_slug = 'Subscriber';
          					$emoti ='&#9816;';
          				} else {
          					$current_user_role_slug  = $user_role;
          					$emoti ='&#9823;';
          				}
          				$user = preg_replace("/[^a-zA-Z0-9]/", "-", $user);
          				return '<li class="menu-item"><a class="' . $class . '" href="/forums/users/' . $user . '/edit">' . $emoti.' '.$current_user_role_slug . '</a>'; 
          				//return '<a class="' . $class . '" href="/forums/users/' . $user . '/edit">' . $user . '</a>';
          			}
          		}
          	}
          	
          	add_shortcode( 'bbp_edit_profile', 'bbp_edit_profile_link' );
          
          
          #9582
          YOUNG JIN LEE
          키 마스터

            로그아웃 메뉴는 이것으로 완성
            li 태그 주의

            
            /* Shortcode to fetch the logout  wp_logout_url('/') */
             //use  
            	function Logout_link( $logout_button ) {
            		
            		//If user isn't logged in, return nothing
            		if(!is_user_logged_in()) {
            			return;
            		} else {
            			
            			extract( shortcode_atts( array(
            				                         'text'  => "",  // default value if none supplied
            				                         'class' => "" //Style class for link
            			                         ), $logout_button ) );
            			
            			if ( $text ) {				
            				return '<li class="menu-item"><a href="' .  wp_logout_url('/'). '">' . $text . '</a>';
            				
            			}
            		}
            	}
            	
            	add_shortcode( 'Logout_link_code', 'Logout_link' );
            
            
            #9583
            YOUNG JIN LEE
            키 마스터

              겟 프로필 메뉴는 이것으로 완성

              
              
              /**
              * Generate BBpress Get Profile Link in a shortcode
              *
              * @param $atts2, text|class
              * @example 
              * application: if text empty show display_name
              * @return string|void
              * li를 준 후 닫지 말 것(테마에 따라 다름)!
              *
              */
              function bbp_get_profile_link( $atts2 ) {
              //If user isn't logged in, return nothing
              		if(!is_user_logged_in()) {
              			return;
              		} else {
              			extract( shortcode_atts( array(
              				                         'text'  => "",  // default value if none supplied
              				                         'class' => "" //Style class for link
              			                         ), $atts2 ) );
              			if ( $text ) {
              				$current_user = wp_get_current_user();
              				$user         = $current_user->user_login;
              				return '<a href="' . bbp_get_user_profile_url($current_user->ID). '">' . $text . '</a>';
              			} else {
              				$current_user = wp_get_current_user();
              				//$user         = $current_user->user_login;
              				$display_name = $current_user->display_name;
              				return '<a href="' . bbp_get_user_profile_url($current_user->ID). '">' .'&#x26EF; '. $display_name. '</a>';
              			}
              		}
              	}
              	add_shortcode( 'bbp_get_profile', 'bbp_get_profile_link' );
              
              
            5 글 보임 - 1 에서 5 까지 (총 5 중에서)
            • 답변은 로그인 후 가능합니다.