[wordpress] Generate BBpress Edit/Get Profile Link in a shortcode

 👁52명의 독자가 공감하셨습니다 
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 중에서)
  • 답변은 로그인 후 가능합니다.
헤르메네이아 미문 (美門)