Help us understand the problem. What is going on with this article?

【ブルゾン風】WPの投稿記事をhtmlファイルで回してみたくない?

やりたいこと

WordPressのブログの記事情報を外部サイトにも反映・表示させたい!
だがしかし、、拡張子がhtmlのファイルにそんなことができるの??

思い悩むこと12時間............
なんとかやり口を見つけ解決まで導き出せました!

今回やりたいことをまとめると
・WordPressの投稿情報を外部サイトでも使いたい
・htmlファイルでphpを使いたい

環境

【サーバー】   Xserver
【サーバー番号】 2001(sv2001)以降

WordPressの投稿情報を外部サイトでも使う方法

ステップは2つです。
・WP管理外でも機能を使えるようにする
・投稿記事を表示する

WP管理外でも機能を使えるようにする

下記記述を対象のhtmlファイルの一番上にコピペしましょう。

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

もしくは

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

どちらも同じ結果が返るので、どちらでも良いでしょう。
$_SERVER['DOCUMENT_ROOT'] とはルートのことで、それ以下のディレクトリは各々でWPファイルを記述してください。

私は上の記述でうまくいかなかったので、下の記述でやるとうまくいきました!

投稿記事を表示する

よーーし!
あとは表示だけだーー!!
WPのループを回して情報を表示させよう!

<?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; ?>

これで完成だー!!ってあれれぇぇ........(コナンくんみたいな声が漏れた)
何故だかうまく情報を取得できません。

<?php
  $args = array( 'posts_per_page' => 3, 'order'=> 'DESC', 'orderby' => 'date' );
  $posts = get_posts($args);

  foreach ($posts as $post) :
?>
  <p><a href="<?php the_permalink(); ?>"><?php echo $post->post_title; ?></a></p>
  <p><?php echo mysql2date( 'Y/m/d', $post->post_date ) ?></p>

<?php endforeach; ?>

foreach文を使うとうまくいきました!!

htmlファイル内でphpを使う方法

.htaccessファイルに記述をしていきます。
サーバーによって記述方法が異なるので様々ですが、
ここでは一般的な記述方法とエックスサーバー利用時の記述方法を掲載しています。

一般的な記述

AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php .php .phtml .html

両方記述しているパターンが多いですが、どちらか1つでも行けると思います。

エックスサーバーの記述

エックスサーバーの中でも設定方法が2種類あります。
サーバー番号が2001(sv2001)以降の場合

AddHandler fcgid-script .html

私はこれで動きました。
サーバー番号が1999(sv1999)以前の場合

AddHandler x-httpd-php5.6 .php .phps .html

エックスサーバーのサーバー番号は、お知らせメールからわかるそうです。
チェックしておきましょう。

以上です!

参考記事

https://macoblog.com/wp-gaibu-kijiroop/
https://princessvision.com/html_php_work/
https://wp.turbo-w.com/wordpress_news_topics_1.html

Yu-8chan
フロントエンドエンジニアです。 主に日々の学習で学んだことをアウトプットしています(React多め)。 初学者故、至らぬ点等ございますが温かい目で見守っていただけると幸いです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away