#やりたいこと
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