안녕하세요.
멀티사이트 구성되어 있고요. 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창이 뜨면서 작동하지 않습니다.
무엇이 문제인지 궁금해서 문의드립니다..
직접 추가하신 숏코드에 switch_to_blog 함수가 적용되어 있지 않는 문제로 추측됩니다.
올려주신 코드 중 아래의 코드를 찾아서
if(!$args['category1']) return 'KBoard 알림 :: cats=null, cats 필수입니다.';
아래의 코드를 추가해보시겠어요?
switch_to_blog('1'); // 메인사이트으 id로 적용해보세요.
최신 버전으로 업데이트가 어려우시다면
최신 버전의 KBoard 플러그인을 다운로드하신 후
코드를 비교해서 수정하시는 것도 고려해보셔야 할 듯합니다.
아래 링크에서 KBoard 플러그인 최신 버전을 다운로드하실 수 있습니다.
https://www.cosmosfarm.com/products/kboard
고맙습니다.
답변감사합니다
리스트를 가져오는데는 문제가 없으나 멀티사이트에서 게시글 작성후 저장할때 문제가 발생하는것같습니다.
소스분석해보니 멀티사이트에서 글 작성 후 저장하면 메인사이트의 게시판으로 저장이 안 됩니다.
안녕하세요.
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;
}
고맙습니다.
안녕하세요 설치된 사이트에서는 정상적으로 동작합니다.
케이보드가 구버전이라(4.2) blog요소에 값을 넣어도 동작을 안 하는것같습니다. 현재 케이보드를 업데이트 하면 사이트 전체를 업데이트해야 하는 상황이라 업데이트는 불가합니다.
kboard_list_where 필터에서 blog id를 이용하여 다른 사이트의 게시판을 불러올 수 있나요?
실제 게시판이 설치된 사이트에서는 정상적으로 동작하는지요?
글쓰기 감소 포인트 등이 설정되어 있다면 잠시 해제하신 후에도 테스트해보셔야 할 듯합니다.
그래도 해결되지 않으신다면, 올려주신 숏코드 대신
저희가 이전 댓글에 안내해드린
숏코드 및 kboard_list_where 필터에 get_current_blog_id 함수를 적용해서도 테스트해보시겠어요?
고맙습니다.
답변 감사합니다.
쓰기권한을 전체로 해도 안 되는것으로 확인이 되고 있습니다..
안녕하세요~^^
KBoard 플러그인에서 게시글 작성 시 "권한이 없습니다." 안내창이 표시된다면
쓰기권한을 확인해보시겠어요?
워드프레스 관리자 -> KBoard -> 게시판 목록 -> 게시판 선택 -> 권한설정 페이지에서 설정하실 수 있습니다.
Administrative Shortcodes 플러그인을 사용해보진 않았지만
KBoard 플러그인에서 아래의 숏코드를 활용하시면
멀티사이트 환경에서 게시판을 사용하실 수 있습니다.
[kboard id=1 blog="1"]
위의 코드에서 id값은 메인 사이트에서 만드신 게시판의 id값입니다.
그리고 blod값은 메인 사이트의 id값입니다.
kboard_list_where 필터에 get_current_blog_id 함수를 활용하시면
멀티사이트 blog id를 가져올 수 있으며 특정 사이트에만 코드를 적용하실 수 있습니다.
고맙습니다.