WordPress外からWordPressの記事一覧を表示させる

ウェブサイトに表示させる記事をWordPressで書いて管理したいが、表示はWordPressではなく別のシステム(このときはオリジナルのECサイトでした)でおこないたいという依頼がありました

そこで今回は、WordPress外からWordPressの記事を取得して表示してみましょう。

 

wp-load.php の読み込み

WordPressで書かれた記事を取得する際には、WordPressで用意されている関数を利用するのが簡単です。

そこで、WordPress用の関数を利用できるようにするため、 wp-load.php を読み込みます。

phpファイルの先頭で読み込むようにします。

<?php
require_once( $_SERVER['DOCUMENT_ROOT']. '/wp-load.php' );

wp-load.php へのパスはご自分の環境に合わせて変更してください。

今回の例では下記のような構成になっています。

public_html  ドキュメントルートであり、WordPressがインストールされているディレクトリ
 + wp-load.php  これを読み込む

 

これが例えば、

public_html  ドキュメントルート
 + wp  WordPressがインストールされているディレクトリ
  + wp-load.php  これを読み込む

のような構成の場合は

<?php
require_once( $_SERVER['DOCUMENT_ROOT']. '/wp/wp-load.php' );

のように書きます。

 

記事を取得して表示する

今回は例として、前回作成した静的ページのディレクトリに index.php を設置しています。

public_html  WordPressがインストールされているディレクトリ
 + outside  静的ページ用のディレクトリ
  + wplist
   + index.php

index.php の内容は以下のようになります。

<?php
require_once( $_SERVER['DOCUMENT_ROOT']. '/wp-load.php' );


$args = array(
	'post_type' => 'post',
	'post_status' => 'publish'
);

$the_query = new WP_Query($args);

?>

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>うぇぶこーぼー</title>
</head>
<body>

<?php
if ( $the_query->have_posts() ): ?>
	<?php while ( $the_query->have_posts() ):
		$the_query->the_post(); ?>
		<h5><?php the_title(); ?></h5>
	<?php endwhile; ?>
<?php endif; ?>

</body>
</html>

記事のタイトルが新しいものから10件表示されるはずです。

実行例

 

エラーが出た場合

Fatal error: require_once(): Failed opening required ‘/~読み込みパス~/wp-load.php’ 

のエラーが出た場合、wp-load.php の読み込みで指定したパスが間違っていますので確認して修正をしてください。

 

取得条件を変えてみる

記事の取得条件は

$args = array(
	'post_type' => 'post',
	'post_status' => 'publish'
);

の部分にあります。

‘post_status’ => ‘publish’ は「公開」状態の記事を取得するということなので、基本的にこのままにしてください。これを付けないと、下書き状態などの非公開の記事も取得してきてしまいます。

 

‘post_type’ => ‘post’ は記事のタイプになります。’post’ はWordPressのメニューの「投稿」から書いた記事が対象になります。

もし、固定ページを取得したいようであれば ’page’ にしてください。

そのほか、カスタム投稿タイプを指定して、特定のカスタム投稿のみを取得することもできます。

 

取得件数は10件ですが、これはWordPressの管理画面から「設定」-「表示設定」-「1ページに表示する最大投稿数」で設定されている件数になります。

取得件数を変更したい場合は、条件に

‘posts_per_page’ => 1ページの取得件数

を追加してください。

$args = array(
	'posts_per_page' => 6,
	'post_type' => 'post',
	'post_status' => 'publish',
);

取得条件の各行の最後には ,(カンマ)を忘れずに入れてください

実行例

 

まとめ

すでにサイトが存在しているところに、ブログ記事などを入れたい場合、専用に記事管理画面を制作するとなると時間もコストもかかってしまいます。

今回の例のように、外部からWordPressの記事を取得できるようになれば、記事を書いたり管理したりする部分をWordPressに任せ、表示だけ任意のシステムにすることも可能になります。

 

コメントを残す

メールアドレスが公開されることはありません。