멀티사이트에서 게시글 작성할때 권한 문의드립니다.

안녕하세요.

멀티사이트 구성되어 있고요. 1번 사이트에서 게시판을 생성하고 2번사이트에서 Administrative Shortcodes 플러그인을 사용하여 1번사이트의 게시판을 불러오는 형태입니다.

https://wordpress.org/plugins/administrative-shortcodes/

[switch_to_blog id="1"][custom_kboard id="8" category1="카테고리"][/switch_to_blog]

kboard 숏코드는 where절 커스텀 때문에 다음과 같이 새로 만들어서 사용중입니다.

function custom_kboard_list_where( $where) {
	return $where . " and ( category1 like '%카테고리%' or category1 = '전체'  or category1 = '' )"; 
}

add_shortcode('custom_kboard', 'custom_kboard_builder');
function custom_kboard_builder($args){
	if(!$args['id']) return 'KBoard 알림 :: id=null, 아이디값은 필수입니다.';
	if(!$args['category1']) return 'KBoard 알림 :: cats=null, cats 필수입니다.';
	
	add_filter( 'kboard_list_where', 'custom_kboard_list_where' ); 

	$board = new KBoard();
	$board->setID($args['id']);
	
	if($board->uid){
		$board_builder = new KBoardBuilder($board->uid);
		$board_builder->setSkin($board->skin);
		$board_builder->setRpp($board->page_rpp);
		$board_builder->board = $board;
		$kboard = $board_builder->create();
		return $kboard;
	}
	else{
		return 'KBoard 알림 :: id='.$args['id'].', 생성되지 않은 게시판입니다.';
	}
}

 

이런식으로 게시판을 노출하게 되면 리스트와 본문은 정상적으로 잘 노출이 되는데, 글쓰기를 하면 '권한이 없습니다' alert창이 뜨면서 작동하지 않습니다.

무엇이 문제인지 궁금해서 문의드립니다..

 

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    KBoard 플러그인에서 게시글 작성 시 "권한이 없습니다." 안내창이 표시된다면

    쓰기권한을 확인해보시겠어요?

    워드프레스 관리자 -> KBoard -> 게시판 목록 -> 게시판 선택 -> 권한설정 페이지에서 설정하실 수 있습니다.

     

    Administrative Shortcodes 플러그인을 사용해보진 않았지만

    KBoard 플러그인에서 아래의 숏코드를 활용하시면

    멀티사이트 환경에서 게시판을 사용하실 수 있습니다.

    [kboard id=1 blog="1"]

    위의 코드에서 id값은 메인 사이트에서 만드신 게시판의 id값입니다.

    그리고 blod값은 메인 사이트의 id값입니다.

     

    kboard_list_where 필터에 get_current_blog_id 함수를 활용하시면

    멀티사이트 blog id를 가져올 수 있으며 특정 사이트에만 코드를 적용하실 수 있습니다.

    고맙습니다.

  • 답변 감사합니다.

    쓰기권한을 전체로 해도 안 되는것으로 확인이 되고 있습니다..

  • 실제 게시판이 설치된 사이트에서는 정상적으로 동작하는지요?

    글쓰기 감소 포인트 등이 설정되어 있다면 잠시 해제하신 후에도 테스트해보셔야 할 듯합니다.

     

    그래도 해결되지 않으신다면, 올려주신 숏코드 대신

    저희가 이전 댓글에 안내해드린

    숏코드 및 kboard_list_where 필터에 get_current_blog_id 함수를 적용해서도 테스트해보시겠어요?

    고맙습니다.

  • 안녕하세요 설치된 사이트에서는 정상적으로 동작합니다.

    케이보드가 구버전이라(4.2) blog요소에 값을 넣어도 동작을 안 하는것같습니다. 현재 케이보드를 업데이트 하면 사이트 전체를 업데이트해야 하는 상황이라 업데이트는 불가합니다.

    kboard_list_where 필터에서 blog id를 이용하여 다른 사이트의 게시판을 불러올 수 있나요?

  • 안녕하세요.

    KBoard(케이보드) 4.2 버전은 상당히 오래된 버전입니다.

    가급적이면 최신 버전을 사용하는 걸 권장드립니다.

    최신 버전에는 KBoard 게시판 숏코드에 blog id를 적용해서 멀티사이트 연동이 가능합니다.

     

    워드프레스 switch_to_blog 함수를 활용하시면

    멀티사이트에서 메인사이트의 게시판을 가져오거나 반대로 메인사이트에서 멀티사이트에서 게시판을 가져올 수 있습니다.

    자세한 내용은 아래의 링크를 참고해보세요.

    https://codex.wordpress.org/Function_Reference/switch_to_blog

     

    멀티사이트의 게시판에 메인사이트의 게시판을 표시하시려면

    워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에

    아래 코드를 활용해보시겠어요?

    add_filter('kboard_list_where', 'my_kboard_list_where', 10, 1);
    function my_kboard_list_where($where){
    	global $wpdb;
    	$blog_id = get_current_blog_id();
    	if($blog_id == '2'){ // 멀티사이트의 id로 적용해보세요.
    		switch_to_blog('1'); // 메인사이트으 id로 적용해보세요.
    		// where 절 코드를 추가해보세요.
    	}
    	return $where;
    }

    고맙습니다.

  • 답변감사합니다

    리스트를 가져오는데는 문제가 없으나 멀티사이트에서 게시글 작성후 저장할때 문제가 발생하는것같습니다.

    소스분석해보니 멀티사이트에서 글 작성 후 저장하면 메인사이트의 게시판으로 저장이 안 됩니다.

  • 직접 추가하신 숏코드에 switch_to_blog 함수가 적용되어 있지 않는 문제로 추측됩니다.

    올려주신 코드 중 아래의 코드를 찾아서

    if(!$args['category1']) return 'KBoard 알림 :: cats=null, cats 필수입니다.';

    아래의 코드를 추가해보시겠어요?

    switch_to_blog('1'); // 메인사이트으 id로 적용해보세요.

     

    최신 버전으로 업데이트가 어려우시다면

    최신 버전의 KBoard 플러그인을 다운로드하신 후

    코드를 비교해서 수정하시는 것도 고려해보셔야 할 듯합니다.

     

    아래 링크에서 KBoard 플러그인 최신 버전을 다운로드하실 수 있습니다.

    https://www.cosmosfarm.com/products/kboard

    고맙습니다.

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