https://teratail.com/questions/85883
様を参考にさせていただいた上での質問です。
自分で作った WordPress (A) のサイトから rss を引っ張って来て、別の自分で作る WordPress (B) に表示しようと思っています。
(B)のフロントページを
front
1<?php 2include_once( ABSPATH . WPINC . '/feed.php' ); 3$feeduri = '[ (A)のURL ]/feed/'; 4$rss = fetch_feed($feeduri); 5 6// print_r($rss); 7 8if (!is_wp_error($rss)) { 9 $maxitems = $rss->get_item_quantity(3); 10 $rss_items = $rss->get_items( 0, $maxitems ); 11} 12 13foreach ( $rss_items as $item ) : ?> 14 <!-- 記事へのリンクを表示 --> 15 <a href="<?php echo $item->get_permalink(); ?>"> 16 17 <!-- 記事の最初の画像を表示 --> 18 <?php 19 $first_img = ''; 20 if ( preg_match( '/<img.+?src=[\'"]([^\'"]+?)[\'"].*?>/msi', $item->get_content(), $matches ) ) { 21 $first_img = $matches[1]; 22 } 23 ?> 24 <img src="<?php echo esc_attr( $first_img ); ?>" alt=""> 25 26 <!-- 記事タイトルを表示 --> 27 <?php 28 $title = $item->get_title(); 29 if(mb_strlen( $title ) > 40 ): 30 ?> 31 <p class="title"><?php echo mb_substr( $title,0,40 );?>...</p> 32 <?php else : ?> 33 <p class="title"><?php echo $title ;?></p> 34 <?php endif; ?> 35 36 <!-- 投稿日を表示 --> 37 <?php 38 $item_date = $item->get_date(); 39 $date = date('Y/m/d',strtotime( $item_date )); ?> 40 <p class="date"><?php echo $date; ?></p> 41 </a> 42<?php 43endforeach; 44wp_reset_postdata(); 45?>
とすると、何もない白いページが表示され、5行目のprint_r
をのコメントアウトを外してやると、
WP_Error Object ( [errors] => Array ( [simplepie-error] => Array ( [0] => This XML document is invalid, likely due to invalid characters. XML error: XML or text declaration not at start of entity at line 4, column 0 ) ) [error_data] => Array ( ) )
と出ます。
つまり、XMLが始まる前に空行があるから invalid だと言われてるのだと思っているのですが、(A) の方で何か rss に関する設定がおかしいのでしょうか?
問題判別の方法など教えていただけるとありがたいです。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/29 08:24