Blog スタッフブログ

PHP WEB制作

外部のWordPressの投稿記事を読み込んで表示する方法

コーダーのKです。

例えばWordPressで作られたサイトAの投稿記事をサイトBとサイトCにも表示したいといった場合。

WordPressを3つインストールしても対応できますが3箇所で同じ更新をする必要があり運用に難があります。

今回はwp-load.phpを使って同じサーバーにあるWordpressの投稿記事を表示する方法をご紹介します。

前提

newsディレクトリにWordPressがあってshopディレクトリに静的HTMLがある。

shopディレクトリ内のindex.htmlにnewsの新着記事を表示したい。

手順.1

WordPressのタグを使用できるようにするため

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

index.htmlの一番上に設置します。

ファイルパスはインストール場所にあわせて変更します。

index.htmlのままではPHPを処理できないためindex.phpに変更します。

手順.2

WordPressのサブループで新着記事を表示します。

<?php
$args = array(
'category_name' => 'news',
'posts_per_page' => 5,
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post();?>
<article>
  <a href="<?php the_permalink( $post ); ?>"><?php the_title(); ?></a>
</article>
<?php
endwhile;
endif;
wp_reset_postdata();
?>

$argsを変更すればカスタム投稿にも対応できます。

<?php
$args = array(
'post_type' => 'news',
'posts_per_page' => 5,
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post();?>
<article>
  <a href="<?php the_permalink( $post ); ?>"><?php the_title(); ?></a>
</article>
<?php
endwhile;
endif;
wp_reset_postdata();
?>

備考

wp-load.phpを使う方法は簡単にできる反面、複数のWordPressから記事を読み込むことはできません。

同じWordPressから複数の投稿を読み込むことは可能です。

×表示できない場合

newsからお知らせを読み込み。

worksから実績を読み込み。

<?php require_once( './news/wp-load.php'); ?>
<?php require_once( './works/wp-load.php'); ?>

○表示できる場合

newsからお知らせを読み込み。

newsから実績を読み込み。

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