- 世界で最も利用されているCMS
- 管理画面をカスタマイズできる
というような特徴をもつWordPress。
我が社で行われた勉強会での内容をメモした内容になります。
ただしWordPressのインストール等は完了済みであることを前提とします。
ファイル構成
/wp-admin
/wp-content
/themes
/plugins
/uploads
/wp-include
基本的にwp-content以外は触らないようにすること。
プラグインをインストールする
- Advanced Custom Fields
- Custom Post Type UI
プラグイン > 新規追加 で上記2つのプラグインをインストール。
「カスタム投稿タイプ」と「カスタムフィールド」
デフォルトで用意されているページは次の2つ。
- 投稿
- 固定ページ
コレ以外に「お知らせページを追加したいなー」とか「項目を増やしたいなー」というときに次の2つを追加する。
カスタム投稿タイプ
「お知らせ」や「イベント」など、好きなページを追加できる。
カスタムフィールド
投稿にタイトル、本文以外に好きな項目を追加できる。
カスタム投稿タイプ/カスタムフィールドを管理画面に追加する
管理画面左側のメニューからそれぞれ行う。
カスタム投稿タイプ
「CPT UI」の「Add/Edit Post Types」を選ぶ。
「Basic setting」の3つのフォームに新しく追加したいページを 英語名 で入力。
「Add Post Type」するとメニューバーに「info」が出現。
管理画面での表示を「お知らせ」のように日本語表示する場合は、「Add/Edit Post Types」の「Edit Post Types」タブから「Additional labels」に日本語訳を追加する。
カスタムフィールド
「カスタムフィールド」を選ぶ。
「フィールド名」は必ず英語にすること。
注意点
この時点では 管理画面にのみ カスタム投稿タイプ/カスタムフィールド が追加された だけです。
カスタム投稿タイプ/カスタムフィールドをweb上でも表示する
外観 > テーマの編集 と進むと、画面右側に各ページを構成するファイルが一覧表示されている。
これらのファイルのコードを追加・修正することでテーマのカスタマイズができるようになる。
ローカルファイルをテキストエディタなどで更新して変更してもOK。
// 「お知らせ(info)」ページの内容をサイドバーに表示する場合
<?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?>
<aside id="secondary" class="sidebar widget-area" role="complementary">
// post_type:表示させたいページのフィールド名
// posts_per_page:ページに表示させたい数
<?php $args = array( 'post_type' => 'info', 'posts_per_page' => '2'); ?>
<?php $the_query = new WP_Query( $args ); ?>
<?php if($the_query->have_posts()) : ?>
<ul>
<?php while($the_query->have_posts()): $the_query->the_post(); ?>
<li>
<span><?php the_field('date_on'); ?></span>
<span><?php the_field('info_detail'); ?></span>
<?php the_title(); // ここで投稿データ取得 ?>
</li>
<?php endwhile; ?>
</ul>
<?php wp_reset_postdata(); ?>
<?php else: ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>
<?php dynamic_sidebar( 'sidebar-1' ); ?>
</aside><!-- .sidebar .widget-area -->
<?php endif; ?>
phpの制御構文
phpではif文で ;
じゃなく :
を使ったりするらしい。
詳しくはこちら。
WordPress公式リファレンス
WordPressで使える関数はこちらを御覧ください。
the_field()とget_field()の違い
「the_field()」は 表示まで全て を行ってくれる。
「get_field()」は 値の取得だけ をしてくれる。
プログラミングが少しデキる人であれば「get_field()」は変数なんかに使うと便利。
ややこしいことは必要ない、というのであれば「the_field()」でOK。
テンプレート自体新しいものを用意して表示したいとき
テンプレートのファイルを管理画面から追加することはできないので、ローカルのフォルダ内に追加する。
そのときの名前は single-{post_type}.php とする。
例えば「single-info.php」のようにすると、自動的に infoの画面はテンプレートをsingle-info.php にするようになるらしい。
引っ越しするとき
内容をコピペで引っ越すことはできるが、カスタマイズは引き継げないので注意。