안녕하세요. K Board를 공지사항 게시판으로 쓰고 있습니다.
K Board 팁을 보고 하단 풋터 부분에 공지사항 최신글 4개를 위젯으로 등록 하였습니다.
로그인 한 뒤는 잘 나오는데 로그아웃(비회원)은 "먼저 로그인 해주세요" 라는 문구가 뜹니다.
게시판 보기 권한 설정은 누구나 볼 수 있도록 되어 있습니다. 아래 소스를 보면 로그인 부분이 포함되어 있는데 삭제하면 될까요?
add_action('widgets_init', 'test_my_kboard_latest_widget_init'); function test_my_kboard_latest_widget_init(){ register_widget('Test_My_KBoard_Latest_Widget'); } class Test_My_KBoard_Latest_Widget extends WP_Widget { public function __construct(){ parent::__construct('test_my_kboard_latest_widget', 'KBoard 내가 쓴 게시글', array( 'classname' => 'test_my_kboard_latest_widget', 'description' => '내가 쓴 게시글 목록을 볼 수 있습니다.', )); } public function widget($args, $instance){ global $wpdb; echo $args['before_widget']; if(!empty($instance['title'])){ echo $args['before_title'] . apply_filters('widget_title', $instance['title']) . $args['after_title']; } if(!empty($instance['limit'])){ $limit = intval($instance['limit']); } if($limit <= 0) $limit = 5; if(is_user_logged_in()){ $where = array(); // 사용자 ID $user_id = get_current_user_id(); $where[] = "`member_uid`='{$user_id}'"; // 제외할 게시판 아이디 if(!empty($instance['exclude'])){ $exclude = esc_sql($instance['exclude']); $where[] = "`board_id` NOT IN ({$exclude})"; } // 휴지통에 없는 게시글만 불러온다. $where[] = "(`status`='' OR `status` IS NULL OR `status`='pending_approval')"; $where = implode(' AND ', $where); $results = $wpdb->get_results("SELECT `uid` FROM `{$wpdb->prefix}kboard_board_content` WHERE {$where} ORDER BY `date` DESC LIMIT {$limit}"); if(!$results){ echo '<p>내 게시글이 없습니다.</p>'; } else{ $url = new KBUrl(); echo '<ul>'; foreach($results as $row){ echo '<li>'; $content = new KBContent(); $content->initWithUID($row->uid); echo '<a href="'.$url->getDocumentRedirect($content->uid).'" title="이동">'.$content->title.'</a>'; echo '</li>'; } echo '</ul>'; } } else{ $login_url = wp_login_url(get_permalink()); echo '<p>먼저 <a href="'.$login_url.'" title="로그인">로그인</a> 해주세요.</p>'; } echo $args['after_widget']; } public function form($instance){ $title = !empty($instance['title'])?$instance['title']:''; $limit = !empty($instance['limit'])?$instance['limit']:'5'; $exclude = !empty($instance['exclude'])?$instance['exclude']:''; ?> <p> <label for="<?php echo esc_attr($this->get_field_id('title'))?>">위젯 제목</label> <input class="widefat" id="<?php echo esc_attr($this->get_field_id('title'))?>" name="<?php echo esc_attr($this->get_field_name('title'))?>" type="text" value="<?php echo esc_attr($title)?>"> </p> <p> <label for="<?php echo esc_attr($this->get_field_id('limit'))?>">출력개수</label> <input class="widefat" id="<?php echo esc_attr($this->get_field_id('limit'))?>" name="<?php echo esc_attr($this->get_field_name('limit'))?>" type="text" value="<?php echo intval($limit)?>"> </p> <p> <label for="<?php echo esc_attr($this->get_field_id('exclude'))?>">제외할 게시판</label> <input class="widefat" id="<?php echo esc_attr($this->get_field_id('exclude'))?>" name="<?php echo esc_attr($this->get_field_name('exclude'))?>" type="text" value="<?php echo esc_attr($exclude)?>" placeholder="예제 1,2,3"> <span>콤마(,)로 구분해서 게시판 ID를 입력해주세요.</span> </p> <?php } public function update($new_instance, $old_instance){ $instance = array(); $instance['title'] = (!empty($new_instance['title']))?strip_tags($new_instance['title']):''; $instance['limit'] = (!empty($new_instance['limit']))?intval($new_instance['limit']):''; $instance['exclude'] = (!empty($new_instance['exclude']))?strip_tags($new_instance['exclude']):''; return $instance; } }