1. 정확한 제품 또는 플러그인 이름
RSS게시판 생성관련 플러그인
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. 확인 가능한 상세 페이지 주소
ttps://www.newstheai.com/rss/allArticle.xml
4. 수정한 코드 내역 (있다면)
안녕하세요~^^
코드를 남겨주실 때는 코드 스니펫을 사용해주세요.
입력하는 코드만 봤을 때는
딱히 문제가 없는듯 합니다.
작성자는 kboard_user_display 필터를 사용하여
표시하실 수 있습니다.
아래 예제 코드를 참고하여 적용해보시겠어요?
add_filter('kboard_user_display', 'kboard_user_display_230418', 10, 5);
function kboard_user_display_230418($user_display, $user_id, $user_name, $plugin, $builder){
$board = $builder->board;
if($user_id && $board->id == '1'){ // 실제 게시판 id로 적용해주세요.
$user = new WP_User($user_id);
$user_display = $user->display_name;
}
return $user_display;
}
고맙습니다.