통합검색 이미지 썸네일

안녕하세요

워드프레스 1년 라이선스를 구매해서 사용 하고 있는데요.

통합검색 기능을 추가해서 개발중입니다.

타이틀, 날짜, 컨텐츠는 불러올 수가 있는데 썸네일은 불러올 수가 없어서 혹시 방법이 있는지 해서 문의드립니다.

사용하고 있는 스킨은 venus-webzine 입니다. 밑에 웹 페이지랑 소스 코드 첨부합니다.

 

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    워드프레스 통합검색에 KBoard 게시글 썸네일을 표시하시려면

    파일을 수정해주셔야 합니다.

    순서대로 잘 보고 적용해보시겠어요?

     

    FTP로 접속해서 /wp-content/plugins/kboard/class/KBContent.class.php 파일에

    아래의 코드를 찾아서

    wp_insert_post($kboard_post);

    찾은 코드 밑에 아래의 코드를 추가해보세요.

    add_action('kboard_document_insert', array($this, 'setPostThumbnail'), 10, 4);

     

    아래의 코드를 찾아서

    wp_update_post($kboard_post);

    찾은 코드 밑에 아래의 코드를 추가해보세요.

    add_action('kboard_document_update', array($this, 'setPostThumbnail'), 10, 4);

     

    아래의 코드를 찾아서

    wp_delete_post($post_id);

    찾은 코드 위에 아래의 코드를 추가해보세요.

    if(has_post_thumbnail($post_id)){
    	$attachment_id = get_post_thumbnail_id($post_id);
    	wp_delete_attachment($attachment_id, true);
    	delete_post_thumbnail($post_id);
    }

     

    아래의 코드를 찾아서

    public function deletePost($post_id){
    	if(has_post_thumbnail($post_id)){
    		$attachment_id = get_post_thumbnail_id($post_id);
    		wp_delete_attachment($attachment_id, true);
    		delete_post_thumbnail($post_id);
    	}
    	wp_delete_post($post_id);
    }

    찾은 코드 밑에 아래의 코드를 추가해보세요.

    /**
     * post에 썸네일을 등록한다.
     * @param int $uid
     * @param int $board_id
     * @param KBContent $content
     * @param KBoard $board
     */
    public function setPostThumbnail($uid, $board_id, $content, $board){
    	global $wpdb;
    	
    	if($uid){
    		$post_id = $content->getPostId();
    		$thumbnail = $wpdb->get_row("SELECT `thumbnail_file`, `thumbnail_name` FROM `{$wpdb->prefix}kboard_board_content` WHERE `uid`='{$uid}'");
    		
    		if($thumbnail->thumbnail_file){
    			$file = file_get_contents(KBOARD_WORDPRESS_ROOT . $thumbnail->thumbnail_file);
    			
    			if($file){
    				$file_type = wp_check_filetype(basename($thumbnail->thumbnail_file), null);
    				$upload_dir = wp_upload_dir();
    				$upload_file = $upload_dir['path'] . '/' . basename($thumbnail->thumbnail_file);
    				
    				$save_result = file_put_contents($upload_file, $file);
    				
    				if($save_result !== false){
    					$attachment = array(
    						'post_mime_type' => $file_type['type'],
    						'post_title' => $thumbnail->thumbnail_name,
    						'post_content' => '',
    						'post_status' => 'inherit'
    					);
    					
    					$attach_id = wp_insert_attachment($attachment, $upload_file);
    					
    					if($attach_id){
    						if(!function_exists('wp_generate_attachment_metadata')){
    							include_once(ABSPATH . 'wp-admin/includes/image.php');
    						}
    						$media = get_post($attach_id);
    						$fullsize_path = get_attached_file($media->ID);
    						$attach_data = wp_generate_attachment_metadata($attach_id, $fullsize_path);
    						wp_update_attachment_metadata($attach_id, $attach_data);
    						if(has_post_thumbnail($post_id)){
    							$attachment_id = get_post_thumbnail_id($post_id);
    							wp_delete_attachment($attachment_id, true);
    						}
    						set_post_thumbnail($post_id, $media->ID);
    					}
    				}
    			}
    		}
    		else{
    			if(has_post_thumbnail($post_id)){
    				$attachment_id = get_post_thumbnail_id($post_id);
    				wp_delete_attachment($attachment_id, true);
    				delete_post_thumbnail($post_id);
    			}
    		}
    	}
    }

     

    위에 적용된 코드는 아래의 링크에서도 확인하실 수 있습니다.

    https://github.com/cosmosfarm/KBoard-wordpress-plugin/blob/master/plugins/kboard/class/KBContent.class.php

    고맙습니다.

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