macoblog

「ゲーム × プログラミング」で生きていく

MMORPGに人生捧げてみ?

WordPressの外部にあるページに記事をループ表示させる方法

WordPress

WEB制作頑張るマン
「wordpress管理下にないページ(サイト)の一部をCMS化してほしいってことなんだけど、WPの外部ってことは関数はもちろん機能は一切使えないわけで、そういう時はどうすればいいんだろうか」

こんな疑問に答える記事になります。

本記事では、WordPressの外部にあるページ(ファイル)やサイトでワードプレスの機能を使用する方法について解説しています、一例としてWordPress外部で記事をループ表示させる方法についても紹介しております。

「外部ページでもWordPressの機能は使えます!」

目次【本記事で解説している内容】

・こんな人におすすめ
「元々サイトがあって後からWordPressが必要になりサブディレクトリにインストールした、だから既存のページはWordPress管理外、つまり機能が使えない、困った困った。」

このパターンは割とよくあるものでして、元々WordPressで全て管理していればメンドクサイ事にはなりません、ただ目の前で起きていることが現実です、そんな時の解決策を紹介したいと思います。

スポンサードサーチ


WordPress外部のページをCMS化する方法

WordPress外部のページをCMS化する方法

root/
  ├ wp/ ←この中にWordPressが入っている
  └ index.php ←ここでWordPressの機能を使いたい(無理)

上記のようにWordPressの外部にあるページ(ここではindex.php)では専用の関数は使用できません、従って投稿記事のループはもちろん値を取り出すこともできません。

これを解決したいと思います。

「TOPページ(上記のindex.phpの部分)に投稿記事のタイトルを表示させたい」というパターンを想定して解説してみます。

実は2ステップでOK、下記の手順になります。

  1. WP管理外でも機能を使えるようにする
  2. 投稿記事を表示する

それぞれコピペしてちょっと編集するだけなので鬼簡単です。

ステップ1:WP管理外でも機能を使えるようにする

まずWordPressの機能を使えるようにします、下記コードを対象となるページの一番上にコピペしてください(ここではルート直下のindex.php)

include($_SERVER['DOCUMENT_ROOT']."/wp/wp-load.php");

$_SERVER['DOCUMENT_ROOT']はルートパスを取得しています、今回はルート直下にある[wp]というディレクトリにWordPressが入っているので上記のようなパスになるわけです。

上記処理をPHPタグ[]で囲むことを忘れない様にしてください、パスの指定も環境に合わせて適時編集しておいてください。

これでも同じ結果が返る

include($_SERVER['DOCUMENT_ROOT']."/wp/wp-blog-header.php");

読み込んでいるファイルが[wp-load.php]から[wp-blog-header.php]に代わっているのがポイントです、どちらも同じ結果を返しますので好きな方を選んでください。

※[wp-load.php]の方が読み込むファイル量が少ないので特に理由がない限りはこっちでOK、[wp-blog-header.php]は環境によってscriptエラーが出ることがあるようです。

ステップ2:投稿記事を表示する

先ほどの処理が正常に動作していればWordPressの機能は使えるようになっています、後は投稿記事をループ表示させるだけですね(普段通りの記述でOK)

一応、記事ループ処理のコードも載せておきますね。

<?php if(have_posts()): while(have_posts()):the_post(); ?>
  
  <p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p>
  
  <time datetime="<?php the_time('Y-m-d'); ?>"><?php the_time('Y.m.d'); ?></time>
  
<?php endwhile;endif; ?>

外部ページの拡張子がhtmlだと、、、

WordPress外部にあるページでWPの機能を使う時って、対象のページの拡張子がhtmlというパターンが多いです。

何が言いたいかっていうと、拡張子htmlだとPHPの記述を受け付けません、なので先ほど解説したコードが使えませんってこと。

んじゃどうしたらいい?

[.htaccess]を使いましょう。

サーバーによって記述が異なるので少しややこしいんですが、コピペで簡単に作れるのでハードルは低いかと。

これについてはhtaccessに3行足すだけ!『.html』内でPHPを実行する方法!が参考になるかと。

※サーバーによって記述が異なるので注意、[html php htaccess xserver]といった感じで検索するとすぐに出てきます。

スポンサードサーチ


まとめ:使えるようになると幅が広がる

WordPressの機能を外部ページで使えるようになると色々応用ができるので覚えておいた方がいいでしょう。

とはいえ、基本的にはWordPressを使うのであれば全てその管理下にするのが普通です、今回解説した内容もダメというわけではないですが多少強引なやり方と思っておいた方がいいです。

どうしようもない時はこの方法で対応するというスタンスでいきましょう。

以上になります。