이미 작성한 글의 작성자를 관리자가 다른 회원이 작성한 것으로 변경할 수 있게 하려고 합니다.
기본 기능으로는 없는 것 같은데, 관리자가 글 작성페이지에서 작성자를 변경할 수 있도록 구성하는 것이 편할 것으로 생각되어 이 방향으로 생각중입니다.
케이보드에 관련 함수가 있는지, 이때 어떻게 접근해야하는지 간단한 예시를 알 수 있을까요?
그리고 이때 고쳐줄 부분은 해당 게시물의 wp_kboard_board_content의 member_uid와 member_display만 UPDATE로 수정되면,
이후 해당 회원이 글 수정, 삭제 등이 가능하고 자신의 글처럼 다룰 수 있게 되는지요?
내부 로직은 맞는듯 합니다.
다만 위 액션들은 작성된 이후에 실행하는 액션들이므로
kboard_pre_document_insert, kboard_pre_document_update 액션이 조금 더 적절한 듯 합니다.
아래 예제 코드를 참고하여 적용해보시겠어요?
add_filter('kboard_pre_document_update', 'kboard_pre_document_update_0905', 10, 4);
function kboard_pre_document_update_0905($content_uid, $board_id, $content, $board){
// ...
$content->row->member_uid = 2;
$content->row->member_display = 'editor';
// ...
};
고맙습니다.
안녕하세요~^^
DB에서 직접 수정하시거나
wpdb로 수정하시고자 하신다면
이해하신 바가 맞습니다.
기준은 member_uid가 기준이고
게시판에서 표시될 때 사용되는 닉네임이 member_display 입니다.
고맙습니다.
답변 감사드립니다.
이런 경우에 kboard_insert_data, kboard_update_data 를 사용하는게 맞을까요?
입력 필드에 게시물을 넘겨줄 사용자명을 입력할 입력필드를 만들고 function.php에 아래와 같이 작성했는데요,
검색된 사용자명이 없을 때, 경고창을 띄우면서 글 저장을 취소하고 다시 수정할 수 있게 하려는데 alert창이 뜨질 않습니다.
이부분은 케이보드의 다른 곳에서 작성을 해야할까요?
입력필드 메타키 : change_writer
function.php
add_filter('kboard_insert_data', 'writer_change', 10, 2);
add_filter('kboard_update_data', 'writer_change', 10, 2);
function writer_change($data, $board_id){
global $wpdb;
if($board_id == '8'){
if(isset($_POST['kboard_option_change_writer']) && $_POST['kboard_option_change_writer']) {
// 변경할 사용자명 변수에 담기
$change_user = $_POST['kboard_option_change_writer'];
// 해당 사용자명으로 회원 테이블 검색 후 $data에 넘기기
$user = get_user_by( 'login', $change_user );
if ( empty($user) ) {
echo "<script>alert('변경하려는 사용자명을 찾을 수 없습니다.')</script>";
} else if ( ! empty($user) ) {
// 해당 사용자명의 'member_uid'와 'member_display'를 찾아서 적용
$data['member_uid'] = $user->ID;
$data['member_display'] = $user->display_name;
}
}
}
return $data;
}
잘 적용 된 것 같습니다. 감사합니다 !