質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
RSS

RSS(Really Simple Syndication)はブログのエントリやニュースの見出し、標準のフォーマットの音声やビデオなどを発行するために使われるウェブフィードのフォーマットの集合体です。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

1529閲覧

htmlで作ったトップページにwordpressの記事をrssを利用して表示させたい

qk-no45

総合スコア1

RSS

RSS(Really Simple Syndication)はブログのエントリやニュースの見出し、標準のフォーマットの音声やビデオなどを発行するために使われるウェブフィードのフォーマットの集合体です。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2020/08/05 05:00

前提・実現したいこと

お世話になります。
html・CSSで作成したトップページに、wordpressの投稿記事を自動で表示させて、記事の投稿はお客様の方でしてもらうようにしたいと思っています。(部分的なCMSと言うのでしょうか…)
イメージ説明
以前、別の仕事でwordpressのrssを取得して静的サイトのページに表示させるという方法で実装していたものがあったため、同じように作成したのですが、エラーが表示されてしまいます。
wordpressもphpもほとんど知識がなく、以前実装したものをコピペで実装しております。
(実装した担当者が退社してしまい聞く事ができません。コピペでできると言っていたのですが…)

1.本体のページ(index.html)は作成済み(新着記事部分を一旦htmlで作成してあります)
2.wordpress導入→子テーマを作成し投稿用のページとして準備(テンプレート:Brittany Light)
https://www.webcreatorbox.com/tech/wordpress-child-theme
↑こちらのサイトを参考に作成しました
3.index.htmlの該当箇所に以前実装したもののphpの記述をコピペし、変更が必要な箇所を書き換え→プレビューするとエラーメッセージが表示される

エラーが解消されて表示できるようでしたら、このまま使用したいとは思っていますが、あまり慣れていない者が実装するには難しいようでしたら、別の方法があれば教えていただきたいです。
間違いの箇所が表示されているのはなんとなくわかるのですが、それをどう修正したらよいのかがわからないため、ご教授いただければありがたいです。

不足の情報がございましたら、お知らせいただければと思います。
よろしくお願いします。

発生している問題・エラーメッセージ

イメージ説明

Warning : simplexml_load_string(): Entity: line 2: parser error : Extra content at the end of the document in C:\xampp\htdocs\*****\www\index.php on line 88 Warning : simplexml_load_string(): <b>Warning</b>: require_once(/home/*****/www/wp/wp-content/themes/britt in C:\xampp\htdocs\*****\www\index.php on line 88 Warning : simplexml_load_string(): ^ in C:\xampp\htdocs\*****\www\index.php on line 88 Notice : Trying to get property 'channel' of non-object in C:\xampp\htdocs\*****\www\index.php on line 92 Notice : Trying to get property 'item' of non-object in C:\xampp\htdocs\*****\www\index.php on line 92 Warning : Invalid argument supplied for foreach() in C:\xampp\htdocs\*****\www\index.php on line 92

未公開のためローカルで作業しております。(XAMPP ver.3.2.2)
画像のグレー、エラーメッセージの*印部分はフォルダ名です

該当のソースコード

大元のhtmlです。

html

1<div id="news" class="bg_beige"> 2 <h2 class="u_line_green">お知らせ</h2> 3 <div class="news_fl"> 4<div class="newsbox"> 5 <div class="photo"></div> 6 <div class="day">2020.9.1</div> 7 <div class="title">テキストが入ります</div> 8 </div> 9 <div class="newsbox"> 10 <div class="photo"></div> 11 <div class="day">2020.9.1</div> 12 <div class="title">テキストが入ります</div> 13 </div> 14 <div class="newsbox"> 15 <div class="photo"></div> 16 <div class="day">2020.9.1</div> 17 <div class="title">テキストが入ります</div> 18 </div> 19 <div class="newsbox"> 20 <div class="photo"></div> 21 <div class="day">2020.9.1</div> 22 <div class="title">テキストが入ります</div> 23 </div> 24 </div> 25 </div>

php

1<?php 2$url = 'https://**********.or.jp/wp/feed/'; 3 4$ch = curl_init(); 5curl_setopt($ch, CURLOPT_URL, $url); 6curl_setopt($ch, CURLOPT_HEADER, false); 7curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 8curl_setopt($ch, CURLOPT_TIMEOUT, 60); 9$xml = curl_exec($ch); 10curl_close($ch); 11 12$rss = simplexml_load_string($xml); 13 14$i=0; 15 16foreach($rss->channel->item as $item){ 17 if($i++ == 4){ 18 break; 19 } 20 21 if( preg_match_all('/<img(.+?)>/is', $item->description, $matches) ){ 22 foreach( $matches[0] as $img ){ 23 if( preg_match('/src=[\'"](.+?jpe?g)[\'"]/', $img, $m) ){ 24 $item->thumbnail = $m[1]; 25 } 26 } 27 } 28 29 $link = $item->link; 30 $title = $item->title; 31 $date = $item->pubDate; 32 $date = date('Y.m.d',strtotime($date)); 33 $desc = $item->children('http://purl.org/rss/1.0/modules/content/'); 34 35 echo '<div class="newsbox">'; 36 echo '<a href="'.$link.'"target="_blank">'; 37 echo '<div class=photo>'; 38 echo '<img src="'.$item->thumbnail.'" alt="'.$title.'">'; 39 echo '</div>'; 40 echo '<div class="day">'.$date.'</div>'; 41 echo '<div class="title">'; 42 echo $title; 43 echo '</div>'; 44 echo '</a>'; 45 echo '</div>'; 46 } 47 48$pdo = null; 49?>

上記htmlの<div class="news_fl"></div>の中にphpをペースト。
$url = 'https://**********.or.jp/wp/feed/';をrssを取得したいwpのURLに変更。
全体のhtmlでは、phpの部分は77行目~125行目になっています。
エラーメッセージは88行目($rss = simplexml_load_string($xml);
)と92行目(foreach($rss->channel->item as $item){
)が間違えていると言っているのかと思うのですが…。

試したこと

エラーメッセージの意味を調べてみたのですが、どう解消すればよいのか意味がわかりません。
http://weble.org/2011/06/18/php-simplexml_load_string
https://teratail.com/questions/24841
https://ja.wordpress.org/support/topic/warning-invalid-argument-supplied-for-foreach/
また、$url = 'https://**********.or.jp/wp/feed/';のURLを実装済みのサイトのものに変更すると、そちらのフィードは取得できます。
以前実装したサイトとはWPのバージョンが違うため、それも関係あるのかと思いWPのバージョンのダウングレードもしてみましたが、変わりませんでした。

補足情報(FW/ツールのバージョンなど)

サーバは「さくらサーバ(スタンダード)」を使用し、
wordpress ver.5.4.2
php ver.7.4.7(モジュール版)
MySQL ver.5.7

使用ソフト
Brackets ver.1.14
html5・CSS3で作成

OS
Windows10 Home ver.1903

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

qk-no45

2020/08/05 08:27

ご指摘ありがとうございます。内容を再度精査してみます。
tabuu

2020/08/05 08:28

システム構成よくわかりませんが、エラーメッセージ的にはrssが正常に取得できていないと思います。 https://**********.or.jp/wp/feed/ このurlをブラウザのアドレス欄に入力して想定通り表示されるか、 $xml = curl_exec($ch); このxmlという変数にrssがテキストで入っているか、 を確認してみてください。
qk-no45

2020/08/05 09:24

ありがとうございます。 URLを入力してみましたが表示されず、下記のようにエラーメッセージが表示されます。この中ではxmlを確認できませんが…確認箇所はこちらのurl内ということでしょうか? <br /> <b>Warning</b>: require_once(/home/**********/www/wp/wp-content/themes/brittany-light/feed-rss2.php): failed to open stream: No such file or directory in <b>/home/**********/www/wp/wp-includes/template.php</b> on line <b>723</b><br /> <br /> <b>Fatal error</b>: require_once(): Failed opening required '/home/**********/www/wp/wp-content/themes/brittany-light/feed-rss2.php' (include_path='.:/usr/local/php/7.4/lib/php') in <b>/home/**********/www/wp/wp-includes/template.php</b> on line <b>723</b><br />
退会済みユーザー

退会済みユーザー

2020/08/05 09:54

同じURLを頻繁に叩きすぎて、先方のシステムじゃらアクセス禁止措置を取られていないか、受信したコンテンツをまず確認することです。
qk-no45

2020/08/05 23:33

ありがとうございます。確認してみます。
guest

回答2

0

自己解決しました。
皆様からご指摘いただいたようにXMLを確認したところ下記のエラーが表示されました。
<br />
<b>Warning</b>: require_once(/home//www/wp/wp-content/themes/brittany-light/feed-rss2.php): failed to open stream: No such file or directory in <b>/home//www/wp/wp-includes/template.php</b> on line <b>723</b><br />
<br />
<b>Fatal error</b>: require_once(): Failed opening required '/home//www/wp/wp-content/themes/brittany-light/feed-rss2.php' (include_path='.:/usr/local/php/7.4/lib/php') in <b>/home//www/wp/wp-includes/template.php</b> on line <b>723</b><br />

feed-rss2.phpのファイルの置き場所を間違えていたようでした。
rssにアイキャッチ画像を含めるためにwp-includes内のfeed-rss2.phpをコピー・編集した際に、子テーマのフォルダに保存したため、feed-rss2.phpが見つからないとのことで、
誤:themes/brittany-light-child/feed-rss2.php → themes/brittany-light/feed-rss2.php
親テーマのフォルダにfeed-rss2.phpを移したところ、表示されました。

初心者の拙い質問にご指摘くださった方々、回答くださった方、ありがとうございました。

投稿2020/08/06 03:09

qk-no45

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

対象のURLにアクセスしてXMLは表示されますか?

投稿2020/08/05 08:24

komasan1

総合スコア257

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

qk-no45

2020/08/05 09:26

ありがとうございます。 他の方からもご指摘いただいたのですが、URLにアクセスしたところXMLは表示されませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問