rss 읽어와 게시글 생성

1. 정확한 제품 또는 플러그인 이름

 

 

2. 상세 내용

아래는 커뮤니티에 작성해 주신 RSS뉴스 피드 가지고와서 게시글로 등록하는 코드입니다.

불러올 xml에서

링크를 본문에 하이퍼링크 형식으로 삽입하고 싶습니다.

또한 게시판에 작성자가 익명으로 나오는데 해당 xml에서의 author필드의 기자를 작성자로 하고 싶습니다.

 

검토 부탁드립니다.

 

 

 

<?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 = '33';
    
    $url = "https://www.newstheai.com/rss/allArticle.xml";
    $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');
}

 

3. 확인 가능한 상세 페이지 주소

 

 

4. 수정한 코드 내역 (있다면)

 

 

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