WordPress外から記事やカテゴリデータなどを呼び出す方法
WordPressでは記事投稿、ページ作成、カテゴリ・タグ作成等、カスタマイズが自在で使いやすいCMSとしてとても優秀なツールです。更新型のサイトであれば積極的に使っていきたい便利なツールですが、そのデータを扱う場所は主にテーマ内のPHPです。
ですが、あるファイルを呼び出すだけでWordPressのディレクトリ下ではない場所からもWordPressの情報を受け取ることが可能です。
その方法はとても簡単です。
WordPressのディレクトリ外からWordPressを呼び出す
<?php require_once( dirname(dirname( __FILE__ )) . '/WordPress1/wp-load.php' ); ?>
require_once() で呼び出しているのは、呼び出したいWordPressのロードファイルです。
上記の例では、WordPress1のディレクトリ下にインスールされたWordPressのデータをロードしています。
このファイルはインストールされたディレクトリ直下にあるので、パスは適宜設定します。
この wp-load.php は、WordPressの設定ファイルを呼び出し、次にWordPressに必要な関数などを芋づる式に読み込んでいくため、呼び出すだけでそのWordPressが使える環境を整えてくれます。
WordPress外から様々なデータを扱う
WordPress外から記事を取得する
上記のファイルを呼び出すことで、データを取得できる環境が整いました。
通常のテーマ、fuctions.php で使うようなコードがそのまま使えるため、
記事を取得したい場合も特に変わったことをする必要はありません。
投稿の公開済み記事を最新5件取得する
<?php require_once( dirname(dirname( __FILE__ )) . '/WordPress1/wp-load.php' ); $args = array( 'post_type' => 'post', 'post_status' => 'publish', 'orderby' => 'date', 'order' => 'DESC', ); $query = new WP_Query( $args ); if ( $query->have_posts() ): while ( $query->have_posts() ) : $query->the_post(); ?> <div class="post"> <h2><?php the_title(); ?></h2> <div class="post_date"><?php the_time('Y.m.d'); ?></div> <div class="post_user"><?php the_author(); ?></div> <div class="post_content"> <?php the_content(); ?> </div> </div> <?php endwhile; wp_reset_postdata(); endif; ?>
固定ページの公開済み記事を取得する
以下の例ではスラッグが「about_us」の固定ページを取得しています。
<?php require_once( dirname(dirname( __FILE__ )) . '/WordPress1/wp-load.php' ); $args = array( 'name' => 'about_us', 'post_type' => 'page', 'post_status' => 'publish', 'orderby' => 'date', 'order' => 'DESC', ); $query = new WP_Query( $args ); if ( $query->have_posts() ): while ( $query->have_posts() ) : $query->the_post(); ?> <div class="page"> <h2><?php the_title(); ?></h2> <div class="post_date"><?php the_time('Y.m.d'); ?></div> <div class="post_user"><?php the_author(); ?></div> <div class="post_content"> <?php the_content(); ?> </div> </div> <?php endwhile; wp_reset_postdata(); endif; ?>
カテゴリ一覧を取得する
以下の例ではリンク付きでカテゴリを取得しています。
カテゴリリンクが必要なければaタグを削除するだけでOKです。
<?php require_once( dirname(dirname( __FILE__ )) . '/WordPress1/wp-load.php' ); $categories = get_categories(); if ( !empty(categories) ): foreach( $categories as $category ): ?> <div class="cate"> <a href="<?php echo get_category_link($category->term_id) ?>"> <?php echo $category->name; ?> </a> </div> endforeach; endif; ?>
おわりに
wp-load.php を呼び出すことで、ここでご紹介した記事などのデータ取得以外にも、記事の投稿、編集、削除や、カスタムフィールドを受け取ることなどもできるので自由度がとても高いです。簡単に更新できるサイトが作りたいけど既存のページからも呼び出せるようにしたい、などの要望を叶えられますので、使ってみてはいかがでしょうか。