안녕하세요
워드프레스 기본 내장 REST API를 활성화한 뒤, API 경로( { site URL }/wp-json/wp/v2/kboard/ )를 통해, kboard custom post type에 대한 데이터를 이용하고 있는데요
KBoard로 작성된 글을 지워도, REST API 상에는 'Post Status'가 'Trash'가 아닌 여전히 'Publish'로 표시됩니다.
게시판 글의 상태를 변경시, REST API에도 적용이 될 수 있는 방법을 찾고 싶은데,
Kboard 코드 구조가 익숙치 않아 도움이 필요합니다...
안녕하세요~^^
KBoard 플러그인에서 게시글 바로 삭제 기능을 활성화할 경우,
게시글이 휴지통으로 이동하지 않고 바로 삭제됩니다.
또한 워드프레스 통합검색을 위해 등록된 post도 삭제됩니다.
게시글 바로 삭제 기능을 비활성화했을 때
post_type이 kboard인 Post의 상태를 발행됨, 휴지통으로 적용하시려면
KBoard 플러그인 코드를 수정해주셔야 할 듯합니다.
FTP로 접속해서 /wp-content/plugins/kboard/class/KBContent.class.php 파일에
아래의 코드를 찾아서
public function updatePost($post_id, $member_uid){
if($post_id && $this->search>0 && $this->search<3){
add_action('save_post_kboard', array($this, 'preUpdatePost'));
$args = array(
'ID' => $post_id,
'post_author' => $member_uid,
'post_title' => $this->title,
'post_content' => ($this->secret || $this->search==2)?'':$this->content,
'post_parent' => $this->board_id
);
wp_update_post($args);
add_action('kboard_document_update', array($this, 'setPostThumbnail'), 10, 4);
}
}
아래의 코드로 교체해보세요.
public function updatePost($post_id, $member_uid){
if($post_id && $this->search>0 && $this->search<3){
add_action('save_post_kboard', array($this, 'preUpdatePost'));
$args = array(
'ID' => $post_id,
'post_author' => $member_uid,
'post_title' => $this->title,
'post_content' => ($this->secret || $this->search==2)?'':$this->content,
'post_status' => $this->status == 'trash' ? 'trash' : 'publish',
'post_parent' => $this->board_id
);
wp_update_post($args);
add_action('kboard_document_update', array($this, 'setPostThumbnail'), 10, 4);
}
}
아래의 코드를 찾아서
public function getPostID(){
global $wpdb;
if($this->uid){
$post_id = $wpdb->get_var("SELECT `ID` FROM `{$wpdb->prefix}posts` WHERE `post_name`='$this->uid' AND `post_type`='kboard'");
return intval($post_id);
}
return 0;
}
아래의 코드로 교체해보세요.
public function getPostID(){
global $wpdb;
if($this->uid){
$post_id = $wpdb->get_var("SELECT `ID` FROM `{$wpdb->prefix}posts` WHERE `post_name`='$this->uid' AND `post_type`='kboard'");
if(!$post_id){
$post_id = $wpdb->get_var("SELECT `ID` FROM `{$wpdb->prefix}posts` WHERE `post_name`='{$this->uid}__trashed' AND `post_type`='kboard'");
}
return intval($post_id);
}
return 0;
}
위의 코드 변경 사항은 아래의 링크에서도 확인 가능합니다.
추후 위의 코드를 업데이트에 반영하도록 하겠습니다.
고맙습니다.