フリーランス|WEB 制作経験丸7年、制作会社様からのご依頼に丁寧・高クオリティでお手伝いいたします。 IRODORI DESIGN

B L O G

【WordPress】ディレクトリ外から投稿記事を取得する方法

WordPress

こんにちは、岐阜・名古屋を拠点に全国各地からご依頼いただくWEBサイトを制作しているフリーランスエンジニアの寺井です。

WordPressの投稿記事は、あるファイルを読み込むだけでWordPressのディレクトリ外からでも取得し表示することが出来です。
今回の記事ではWordPressのディレクトリ外から投稿記事を取得する方法をご紹介したいと思います。

WordPressのディレクトリ外から投稿記事を取得する方法

WordPressのディレクトリ外から投稿記事を取得する方法について、

  • 前提条件
  • 手順
  • サンプルコード
  • 注意点

この順番でご説明します。

前提条件

まずは前提条件。
下記のようにWordPressのディレクトリとは別の場所に設置されているファイルからWordPressの投稿記事を取得します。

root/
 ├ index.php ← ここでWordPressの投稿記事を取得する
 └ wp/
   ├ wp-admin/
   ├ wp-content/
   ├ wp-includes/
   :
   ├ wp-load.php
   :

手順

それでは実際の手順です。

WordPressの投稿記事を取得したいindex.phpでwp-load.phpを読み込みます。

<?php require_once( dirname(__FILE__) . '/wp/wp-load.php' ); ?>

/wp/の部分は、WordPressのディレクトリがどこにあるかによって変わってくるので適宜調整します。

wp-load.phpは、WordPressのコアファイルのひとつで、WordPressの機能を利用するために必要なファイルです。
このファイルを読み込めば、その他重要なファイルは自動で読み込んでくれます。
そのため、wp-load.phpを読み込むだけで、WordPressの機能や関数、投稿記事などを表示出来るようになります。

wp-load.phpを読み込んだ後、投稿記事を表示するための記述は特別何かする必要はなく、通常通りサブクエリを利用して取得します。

サンプルコード

投稿記事を取得するサンプルコードはこちら。

<?php
    require_once( dirname(__FILE__) . '/wp/wp-load.php' );

    $args = array(
        'post_type' => 'post',
        'posts_per_page' => 10,
        'post_status' => 'publish',
        'orderby' => 'date',
        'order' => 'DESC',

    );
    $query = new WP_Query( $args );

    if ( $query->have_posts() ) :
        while ( $query->have_posts() ) :
            $query->the_post();
            // 投稿を表示

        endwhile;
    endif;
    wp_reset_postdata();
?>

注意点

WordPressのディレクトリ外からも簡単に投稿記事を読み込むことが出来ますが、注意点もあります。
それは以下のように複数のWordPressが設置されているディレクトリ構成の場合です。

root/
 ├ index.php ← ここでWordPressの投稿記事を取得する
 ├ wp/
 | ├ wp-admin/
 | ├ wp-content/
 | ├ wp-includes/
 | :
 | ├ wp-load.php
 | :
 |
 └ wp2/
   ├ wp-admin/
   ├ wp-content/
   ├ wp-includes/
   :
   ├ wp-load.php
   :

この場合、ひとつのファイルで読み込めるWordPressはどちらひとつです。

<?php
require_once( dirname(__FILE__) . '/wp/wp-load.php' );
require_once( dirname(__FILE__) . '/wp2/wp-load.php' );
?>

上のように複数のWordPressを読み込むことは出来ません。

<?php require_once( dirname(__FILE__) . '/wp/wp-load.php' ); ?>

このように読み込めば、「wp」のWordPressの投稿記事を取得出来ます。

<?php require_once( dirname(__FILE__) . '/wp2/wp-load.php' ); ?>

このように読み込めば、「wp2」のWordPressの投稿記事を取得出来ます。

まとめ

いかがでしたか?
wp-load.phpを読み込むだけで、簡単に投稿記事を取得することが出来ますね。投稿記事以外にもWordPressの独自関数やフックなど自由に取得・表示することが出来ます。
この方法を知っているだけでカスタマイズの幅が広がりますね。