RSS 게시판을 만들거나 RSS를 불러와서 포스트로 전환 후 게시판으로 import하는 것 여쭙니다.

타 사이트에서 rss를 받아와서 게시판 형태로 뿌려줘야되거든요.

개발하려는 사이트 내에서 k보드 게시판을 사용할 것이라서 rss불러오는 게시판도 k보드로 개발하고 싶습니다.

다른 질문 글에서도 아직 rss를 불러올 수 있는 기능 같은게 없다고 안내하시더라구요.
rss를 불러오는 게시판을 개발할 수 있는 방법이 어떻게 되는지 궁금합니다.

힘들다면 글로 불러와서 글을 게시글로 작성하는 방법도 생각하고 있는데요.
타 사이트 글을 찾아보니 DB에서 wp_posts 테이블과 KBoard 테이블을 비교하여 워드프레스 글을 복사하는 방법이 있다고 하여 이부분에 대해서도 방법을 여쭙니다.

숙련된 개발자가 아니라서 (k보드 입력필드 추가하는 정도입니다.)
k보드에서 유료지원을 받게 되면 금액이 얼마나 될까요?

또 추가로 개별 작성되는 게시글들에 이메일 주소를 입력하여 전송을 할 수 있는 기능도 만들고 싶습니다.

감사합니다 ^^

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

    말씀하신 부분 다 가능합니다.

    1. RSS를 불러와서 KBoard 게시글로 작성하시려면

    특정 시간 간격으로 코드를 주기적으로 실행주어야 합니다.

    워드프레스 크론(Wordpress Cron)을 이용해서 간단한 플러그인을 만들어봤습니다.

    FTP로 접속해서 /wp-content/plugins 폴더에 test.php 등의 파일을 만들어서 내용을 그대로 붙여넣기 해주세요.

    그리고 워드프레스 관리자 페이지에서 해당 플러그인을 활성화 해주세요.

    <?php
    /*
    Plugin Name: 테스트 플러그인
    Plugin URI: https://www.cosmosfarm.com/
    Description: 테스트 플러그인 입니다.
    Version: 1.0.0
    Author: 코스모스팜 - Cosmosfarm
    Author URI: https://www.cosmosfarm.com/
    */
    
    if(!defined('ABSPATH')) exit;
    
    register_activation_hook(__FILE__, 'my_activation');
    function my_activation(){
        if (! wp_next_scheduled('my_hourly_event')){
    		wp_schedule_event(time(), 'my_event', 'my_hourly_event');
        }
    }
    
    add_filter('cron_schedules', 'my_add_weekly');
    function my_add_weekly($schedules){
    	$schedules['my_event'] = array(
    		'interval' => 600, // 초 단위 600은 10분
    		'display' => 'test'
    	);
    	return $schedules;
    }
    
    add_action('my_hourly_event', 'do_this_hourly');
    function do_this_hourly(){
    	global $wpdb;
    	$board_id = '게시판 id';
    	
    	$url = "RSS 주소";
    	$curl = curl_init($url);
    	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    	$data = curl_exec($curl);
    	
    	$xml = simplexml_load_string($data);
    	
    	foreach($xml->channel->item as $item){
    		$link = esc_sql($item->link);
    		
    		$select = "`{$wpdb->prefix}kboard_board_content`.`uid`";
    		$from = "`{$wpdb->prefix}kboard_board_content` LEFT JOIN `{$wpdb->prefix}kboard_board_option` ON `{$wpdb->prefix}kboard_board_content`.`uid`=`{$wpdb->prefix}kboard_board_option`.`content_uid`";
    		$where = "`board_id`='{$board_id}' AND `parent_uid`='0' AND `notice`='' AND (`status`='' OR `status` IS NULL OR `status`='pending_approval') AND `{$wpdb->prefix}kboard_board_option`.`option_key`='link' AND `{$wpdb->prefix}kboard_board_option`.`option_value`='{$link}'";
    		$result = $wpdb->get_var("SELECT {$select} FROM {$from} WHERE {$where}");
    		
    		if(count($result) < 1){
    			$content = new KBContent($board_id);
    			$content_title = kboard_safeiframe(kboard_xssfilter($item->title));
    			$content_content = kboard_safeiframe(kboard_xssfilter($item->description));
    			
    			$data = array();
    			$data['board_id'] = $board_id;
    			$data['member_uid'] = '1';
    			$data['member_display'] = '관리자';
    			$data['title'] = $content_title;
    			$data['content'] = $content_content;
    			$data['date'] = date('YmdHis', current_time('timestamp'));
    			
    			$_POST['kboard_option_link'] = $item->link;
    			
    			$content_uid = $content->insertContent($data);
    			$content->updateOptions();
    		}
    	}
    }
    
    register_deactivation_hook(__FILE__, 'my_deactivation');
    function my_deactivation(){
    	wp_clear_scheduled_hook('my_hourly_event');
    }

    위의 코드에서 게시판 id와 RSS 주소 부분은 실제 id 및 주소로 적용해보세요.

     

    2. 워드프레스 글(Post) 작성 시 KBoard 게시판에도 글을 작성하시려면

    워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에

    아래의 코드를 추가해보시겠어요?

    add_action('transition_post_status', 'my_transition_post_status', 10, 3);
    function my_transition_post_status($new_status, $old_status, $post){
    	if($post->post_type == 'post' && $new_status == 'publish'){
    		$board_id = '1';
    		$content = new KBContent($board_id);
    		$user = get_userdata($post->post_author);
    		
    		$data = array();
    		$data['board_id'] = $board_id;
    		$data['member_uid'] = $post->post_author;
    		$data['member_display'] = $user->display_name;
    		$data['title'] = $post->post_title;
    		$data['content'] = $post->post_content;
    		$data['date'] = date('YmdHis', current_time('timestamp'));
    		
    		if($old_status != 'publish'){
    			$content_uid = $content->insertContent($data);
    			add_post_meta($post->ID, 'kboard_content_uid', $content_uid);
    		}
    		else{
    			$content_uid = get_post_meta($post->ID, 'kboard_content_uid', true);
    			$content->initWithUID($content_uid);
    			$content->updateContent($data);
    		}
    	}
    }

    위의 코드에서 $borad_id = '1' 부분은 실제 게시판 id로 적용해주시면 됩니다.

     

    3. 현재 최신 버전 KBoard 플러그인의 기본 스킨(avatar, contact-form, default, thumbnail)에서

    입력 필드를 관리자 페이지에서 설정하실 수 있습니다.

    워드프레스 관리자 -> KBoard -> 게시판 목록 -> 게시판 선택 -> 입력필드 설정 페이지를 확인해보시겠어요?

    입력 필드 설정을 지원하지 않는 스킨에서 입력 필드 추가 방법은

    아래의 링크를 참고해보세요.

    워드프레스 게시판 KBoard(케이보드) 새로운 입력 필드 추가 방법 (커스터마이징)

     

    입력 필드를 설정하셨다면, 게시글 작성 시 메일을 보내는 코드를 추가해주셔야 합니다.

    워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에

    아래의 코드를 추가해보시겠어요?

    add_action('kboard_document_insert', 'my_kboard_document_insert', 10, 4);
    function my_kboard_document_insert($content_uid, $board_id, $content,	$board){
    	$to = $content->option->email;
    	$title = $content->title;
    	$content = $content->content;
    	wp_mail($to, $title, $content);
    }

    wp_mail에 대한 자세한 내용은 아래의 링크를 참고해보시겠어요?

    https://developer.wordpress.org/reference/functions/wp_mail/

     

    유료 기술 지원 문의는 커뮤니티 쪽에서 답변을 드리기 어렵습니다.

    저희 고객지원 쪽 이메일로 연락 주시면 확인 후 순차적으로 회신드리고 있습니다.

    고맙습니다.

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