サポート » 使い方全般 » 静的HTMLにRSSを読み込ませる際、存在しない記事が表示されてしまう

  • 解決済 dafmin

    (@dafmin)


    現在、静的なHTMLに、javascriptを利用して新着記事のタイトルをリンク付きで読み込もうと試行錯誤をしております。
    こちらのフォーラムなどを参考にしつつ、javascriptを利用しようと思ったのですが、どうやってもうまく読み込みができません。

    具体的な状況として、

    ■WEBサイトのデータに『AAA』というフォルダを設け、その中にwordpressをインストール
    index.html
    -AAAフォルダ
    -index.php(他、諸々)
    -wp-admin
    -wp-content
    -wp-includes
    という階層になっています。
    ■index.htmlにrss読み込み用のjavascriptを記載(こちらのフォーラムやネット上にあるいろいろなscriptを試してみました)
    ■読み込み先として『http://www.example.com/AAA/?feed=rss2』と記載
    ■サイト全体をhtaccessにてベーシック認証をかけている。

    なお、レンタルサーバーを利用してWordPressを利用しておりましたが、一度そのレンタルサーバーを解約。
    解約時にWordpressのデータベース以外のバックアップデータを作成しました。
    再度レンタルサーバーを契約し、データベースを新規作成、WordPressを新規インストールし、wp-contentのthemesとpluginsフォルダをサーバーに上書きコピー、という方法で記事以外の元データを復旧した(つもり)。

    上記の状態で、index.htmlに表示されるのが、『Hello world! – 未分類(2012年5月17日)』という一件の記事です。
    ちなみに、復旧時に使用したデータをサーバーからダウンロードしたのが、ちょうど上記日時くらいではありますが、現在は当該記事は存在しません。
    また、wp-config.phpなどの記載は、現在のデータベースなどの内容になっています。

    上記の存在しない『Hello world!』の記事タイトルをクリックすると、『http://www.example/AAA/?p=1』というページが表示されます。
    ところが、現在投稿している記事には『Hello world!』という記事もなく、カテゴリーに『未分類』というカテゴリーもありません。
    カテゴリーについては、記憶が定かではないのですが、デフォルトであったカテゴリーの名前を名前変更して別のカテゴリー名(仮に『○○○』と呼びます)にしています。
    『http://www.example/AAA/?p=0』と、1を0に変更すると現在作成している『○○○』の記事一覧が表示されます。

    読み込み先として記載しているRSSのアドレスも、ブラウザで読み込むとちゃんと『○○○』の一覧が表示されますが、
    RSSのバリデータで読み込み先のアドレスをチェックしてみると、下記のような結果が表示されます。

    ・Feed Validation Serviceでのチェック結果
    Server returned HTTP Error 401: Authorization Required
    ・FEED Validatorでのチェック結果
    It looks like this is a web page, not a feed. I looked for a feed associated with this page, but couldn’t find one. Please enter the address of your feed to validate.
    と表示され、HTMLソースの1行目にある
    <!DOCTYPE HTML PUBLIC “-//IETF//DTD HTML 2.0//EN”>
    がマークアップされています。

    ベーシック認証が原因かと思い、htaccessを削除してチェックもしましたが、症状は改善されませんでした。

    症状の要点として、

    ■index.htmlにrssを正常に読み込めず、存在しない『Hello world! – 未分類(2012年5月17日)』の記事が読み込まれる。
    ■上記記事タイトルをクリックすると、『http://www.example/AAA/?p=1』が表示され、記事が見つからないというエラー
    ■パンくずメニューのプラグインで表示された上記のP=1のページは『404』と表示されている。
    ■rssのアドレスを直接表示すると正常に記事一覧が表示される。
    ■RSSのバリデータでチェックするとエラー結果が示されます。

    です。

    長文となり恐縮ですが、上記症状を改善し、正常にindex.html(静的HTML)にRSSの記事タイトルを読み込ませるにはどのような解決方法がありますでしょうか?
    ご教示いただけますと幸いです。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター jim912

    (@jim912)

    dafminさん

    使用しているjavascriptがなんらかのキャッシュ機能を備えている可能性や、ベーシック認証が怪しいと思われます。

    jsではなく、phpでWordPressから直接読み込む方法なども検討ください。

    自作トップページのindex.phpに新着5件表示

    トピック投稿者 dafmin

    (@dafmin)

    jim912さん、ご返信をありがとうございました!

    お教え頂いていたページ等も試してはみたのですが、いずれの方法でもなかなか正常にいかず・・・
    お教え頂いた記事にあったソースをコピペして、冒頭のwp-blog-header.phpやwp-blog-load.phpへのパスをwordpressをインストールしたフォルダのパスを追加し、index.phpとしてindex.htmlと同じ階層にアップロードし、確認してみると、いずれの場合も何もデータが無い状態(真っ白な状態)でした・・・

    本日色々試しておりまして、

    ・データベースの『Hello world!』というタイトルのpostがあったため、そのデータのpost statusを『trash』から『publish』に変更
    ・index.htmlに読み込まれていた『Hello world!』をクリックすると、ちゃんとその記事が表示されるようになった。

    という結果がでました。
    phpやwordpressには不得手ながら思ったのは、症状的には『postを、なぜか最初に登録されていた1件(Hello World)しか読み込んでこない』という症状のようです。
    なお、現在使用しているjavascriptはネット上で参考にさせて頂いたコードで、以下の通りです。

    <script src="https://www.google.com/jsapi" type="text/javascript"></script>
    <script type="text/javascript">
    var xmlUrl = "http://www.example.com/AAA/?feed=rss2";  //feedのURL
    var setNum = 5; //表示件数
    var setID = "feed"; //表示させる箇所のID
    google.load("feeds", "1");
    function initialize() {
        var html = '';
        var feed = new google.feeds.Feed(xmlUrl);
        feed.setNumEntries(setNum);
        feed.load(function(result) {
            if (!result.error){
                var container = document.getElementById(setID);
                for (var i = 0; i < result.feed.entries.length; i++) {
                    var entry = result.feed.entries[i];
                    var title = entry.title;    //記事タイトル取得
                    var link = entry.link;      //記事のリンクを取得
                    //日付を取得し年月日を整形
                    var publishedDate = entry.publishedDate;
                    var pubDD = new Date(publishedDate);
                    yy = pubDD.getYear();if (yy < 2000) { yy += 1900; }
                    mm = pubDD.getMonth() + 1;dd = pubDD.getDate();
                    var pubDate = yy +'年'+ mm +'月'+ dd +'日';
                    //カテゴリ要素がある場合は取得
                    for (var j = 0; j < entry.categories.length; j++) {
                        var categorie = entry.categories[j];
                    }
                    //表示する部分を整形
                    html += '<li><a href="' + link + '">' + title +'</a> - ' + categorie + '(' + pubDate + ')</li>';
                }
                container.innerHTML = html;
            }
        });
    }
    google.setOnLoadCallback(initialize);
    </script>

    キャッシュ機能を備えているのかどうかが、不勉強で分からなくて申し訳ないのですが・・・
    なお、RSSのfeedのアドレス部分をYahooなどのRSS(.xml)に書き換えると、ちゃんと最新の5件が表示されました。
    ベーシック認証も、現在非公開状態で立ち上げ準備中のため、ずっと外しておくこともできず、一瞬ベーシック認証を外してチェックして同様に読み込めなかったのですぐに再び認証をかける、ということはしてみましたが、認証を外している際も同様にうまくいきませんでした・・・
    フォーラムに、htmlファイルとしてphpを動かす、という記事もあったのでそちらも試しては見たのですが、同様にうまくいきませんでした・・・

    何となく、最初に登録されていた記事しか出てこない、というところと、データベースにはちゃんと他の登録した記事が存在する、というあたりから、なんらかのキャッシュ、というところも疑わしい気もするのですが・・

    もし原因がお分かりになりますようでしたら、ご教示頂けますと幸いです。

    横からごめんなさい。
    http://www.example.com/AAA/?feed=rss2
    Feedそのものが正しいかのチェックは終わっていますか?
    上記Feed URLをブラウザのアドレス欄に入力し確認してみて下さい。
    そこで表示されているものとお使いのJS, PHPで取得できるものが違えばプログラムを検証しなければいけませんし、同じならばFeedの出力がおかしいか他の要因が考えられます。

    トピック投稿者 dafmin

    (@dafmin)

    taikikenさん、ご返信をありがとうございました。
    最初の文章でも書いていたのですが、feed URLは正常に表示できました。

    その後、色々と試してみて、解決することができましたので、一応手順だけ記載しておきます。

    1.サーバーからwordpressをインストールしたデータをサーバーから削除。データベースも削除。記事はwordpressのツールからエクスポート。
    2.サーバーから.htaccessとパスワードデータを削除
    3.データベースを新規作成、wordpressの最新バージョンをサーバー上に削除前と同じフォルダを作成し、そこにクリーンインストール。
    4.その状態でwordpressにて新規記事を作成、index.htmlを確認し、その記事が正常に表示されることを確認。
    5.オリジナルのテンプレートをthemeフォルダにアップロードし、適用。記事を作成し、index.htmlを確認、正常に表示されることを確認。
    6.元々あった記事を別サーバーにインストールしたwordpressにインポートし、それを開きつつ、コピー&ペーストで記事を新規登録。index.htmlに正常に表示されることを確認。

    ということで、なんとか正常な状態に持っていくことができました。
    ただし、そこまでの過程で『wordpressを再インストール後、エクスポートしておいた記事をインポートすると、index.htmlに記事が読み込まれないという、同様の症状が発生。その後、記事を投稿しても読み込まれない』という現象が起き、最終的に行ったのが、上に記載した手順(記事をインポートせずに、新規投稿で投入する)でした。

    理由としては正確にはなんなのかは分からないのですが、エクスポートしたデータをインポートするとおかしくなるというのは、postのデータがなんらかおかしかった、というところと、wordpressインストール時にベーシック認証がかかっていたり、htaccessがあるとダメなのではないか、という位です。

    ということで、なんとなく結果としてはうまくいった、ということで解決済みとさせて頂きます。

    ご返信を頂きました方々、誠にありがとうございました!

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「静的HTMLにRSSを読み込ませる際、存在しない記事が表示されてしまう」には新たに返信することはできません。