kboard 커스텀 포스트 타입의 Post Status가 변경되지 않습니다

안녕하세요

워드프레스 기본 내장 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;
    }

    위의 코드 변경 사항은 아래의 링크에서도 확인 가능합니다.

    https://github.com/cosmosfarm/KBoard-wordpress-plugin/commit/4d5ee36df06ec3251b92a7954a2259cedd01fdda

    추후 위의 코드를 업데이트에 반영하도록 하겠습니다.

    고맙습니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요