WordPress勉強会
WordPressとは?
WordPressは「CMS(Contents Management System)」の一種です。
CMSを導入することで、Web制作の知識がない人でも、HTML・CSSを編集せず管理画面からWebサイトの更新ができます。
CMSの中でもWordPressは世界的に人気で、企業サイトから個人のブログサイトまで幅広く使われています。
XAMPPにWordPressをインストールする
WordPressをインストールするには、PHPとデータベースが使える環境が必要です。
今回はXAMPPにWordPressをインストールしていきます。
WordPressをダウンロード
WordPressの公式サイトにアクセスして、WordPressのシステムファイル一式をダウンロードします。
htdocsに設置
解凍したファイルをhtdocsに設置します。
データベースを用意
PHPMyAdminにアクセスし、データベースを用意しておきます。
インストール実行
ブラウザでアクセスし、画面に従ってインストールを実行します。
管理画面を見てみよう
ポートフォリオサイトを作ろう(準備編)
今回はポートフォリオ(作品集)を題材とした、シングルページのWebサイトをWordPressで作っていきます。
オリジナルテーマの作成場所を用意
自分でデザインしたWebサイトにWordPressを導入するときは、オリジナルの「テーマ」を作ることになります。
また、テーマフォルダ内に作るファイルのことを「テンプレート」と呼びます。
テンプレートファイルはその役割ごとにファイル名が決められているので、どのファイルを作れば良いか迷ったときは公式ドキュメントの「テンプレート階層」のページを参考にしましょう。
テーマに必要なファイルを準備しよう
テーマ用のファイルは、 wp-content/themes/
内に作成します。
フォルダ「portfolio」を作成し、下記の2ファイルを用意します。この2つがないとテーマとして機能しません。
index.php
style.css
style.css
は、テーマの設定ファイルにもなります。
CSSコメントによって、管理画面【外観>テーマ】に様々な情報を表示させられます。下記は設定内容の一例です。
/*
Theme Name: マイポートフォリオ
Description: {$説明文}
Author: {$作者}
Version: {$バージョン}
*/
以上の準備をすることで、管理画面【外観>テーマ】にテーマが表示されているはずです。
有効化して、 index.php
が表示されることを確認しましょう。
配布したHTMLを一旦そのまま表示させよう
今回はシングルページ(=トップページのみ)のサイトを作るので、テンプレートファイル front-page.php
にコーディングをしていきます。
まずはとりあえず、配布したソースコードをそのままテーマとして表示してみましょう。
HTMLとCSSをそれぞれ対応するテンプレートファイルにコピペします。
- 配布の
index.html
→ テーマのfront-page.php
- 配布の
style.css
→ テーマのstyle.css
これだけではまだ正常には表示されません。テンプレートファイルを編集していきます。
テーマに必須のテンプレートタグを追加する
テーマには次の3つのテンプレートタグが必要です。忘れがちなので最初に書くクセをつけておきましょう。
①head閉じタグ(</head>
)の直前に次のテンプレートタグを追加。
<?php wp_head(); ?>
</head>
②body開きタグ(<body>
)の直後に次のテンプレートタグを追加。
<body>
<?php wp_body_open(); ?>
③body閉じタグ(</body>
)の直前に次のテンプレートタグを追加。
<?php wp_footer(); ?>
</body>
functions.phpを使ってテーマのstyle.cssを読み込む
テーマのstyle.css
は<link>
タグで読み込むのではなく、functions.php
を使って読み込む方法が推奨されています。
add_action( 'wp_enqueue_scripts', function(){
wp_enqueue_style('style', get_stylesheet_directory_uri().'/style.css');
});
functions.php
で行います。
テンプレートファイル上で画像を読み込む
上記で出てきたget_stylesheet_directory_uri()
という関数は、テーマフォルダ内に配置した画像をテンプレートファイル上で読み込みたい場合にも使えます。
<img src="<?php echo get_stylesheet_directory_uri(); ?>/images/twitter.svg" alt="">
「制作実績」を作ろう
「制作実績」を管理画面から登録できるようにカスタマイズしていきます。
管理画面に「制作実績」メニューを作る
管理画面に「制作実績」投稿用のメニューを増やします。
このように、デフォルトの「投稿」「固定ページ」とは別の種類のコンテンツを管理するための機能を「カスタム投稿タイプ」と呼びます。
add_action('init', function(){
register_post_type('work', [
'label' => '制作実績',
'public' => true,
'menu_position' => 5,
]);
});
→ 関数リファレンス:register_post_type()
プラグインを使って投稿の編集画面をカスタマイズする
WordPressでは、世界中の開発者が「プラグイン」を配布しています。
プラグインをインストールするだけで複雑なカスタマイズを簡単に適用できたり、お問い合わせフォームやショッピングカートなどの追加機能を実装したりすることができます。
今回はプラグイン「Advanced Custom Fields」を使い、制作実績の編集画面をカスタマイズしていきます。
→ Advanced Custom Fields 公式ドキュメント(英語)
プラグインのインストール方法
管理画面【プラグイン>新規追加】から、下記のどちらかの方法でインストールできます。
- 検索結果の中から「今すぐインストール」を選択
- 「プラグインのアップロード」を選び、プラグインの公式サイト等からあらかじめダウンロードしたzipファイルをアップロードしてインストール
インストールしたプラグインは、【プラグイン>インストール済みプラグイン】から「有効化」できます。
カテゴリー登録機能をつける
デフォルトの「投稿」についているカテゴリーやタグのような分類機能を、制作実績にも作ってみます。この機能を「カスタムタクソノミー」と呼びます(タクソノミー=分類)。
add_action('init', function(){
register_taxonomy('workcategory', 'work', [
'label' => 'カテゴリー',
'hierarchical' => true,
]);
});
→ 関数リファレンス:register_taxonomy()
次の章から、管理画面で登録した内容をテンプレートファイルに表示させます。
登録した制作実績を表示させる
基本のループの書き方は次のとおりです。
//投稿の取得
$queryarg = [
'post_type' => 'work', //投稿タイプ
'posts_per_page' => -1, //件数
];
$query = new WP_Query($queryarg);
//投稿の有無をチェック
if($query->have_posts()):
//取得した投稿の分だけループする
while($query->have_posts()): $query->the_post();
//この中で内容を出力(例:タイトル)
the_title();
endwhile;
wp_reset_postdata();
endif;
上記はすべてPHPのコードですが、WordPressのテーマ開発は「HTMLの中にPHPを組み込む」ような形で進めていくのが一般的です。
タイトルを<h3>
で表示させる場合、while
を開いたら一度PHPを終了して、HTMLのh3を書いて、タイトルを表示するためにPHPを開始して…という書き方になります。
<?php
while($query->have_posts()): $query->the_post();
?>
<h3><?php the_title(); ?></h3>
<?php
endwhile;
?>
while(){...}
とwhile(): ... endwhile;
PHPのwhile文は、中括弧を使う書き方「while(){...}
」と、セミコロンで開いてwhileで閉じる書き方「while(): ... endwhile;
」があります。
※if文も同様です。
各要素の出力例
//タイトル
the_title();
//カスタムタクソノミーで設定したカテゴリ名
//※1投稿に1つだけカテゴリが必ず設定されていることを想定した、必要最小限のコード
$terms = wp_get_post_terms($post->ID, 'workcategory');
echo $terms[0]->name;
//カスタムフィールド(Advanced Custom Fields)の値
//値の有無で条件分岐させたいときは if(get_field('フィールド名')){}
the_field('フィールド名');
お問い合わせフォームを設置しよう
プラグイン「Contact Form 7」を使って、お問い合わせフォームを設置してみましょう。
Contact Form 7では、フォームの設定を作ると「ショートコード」が生成されます。
テンプレートファイルに表示させるときはこのショートコードを使用します。
echo do_shortcode('ショートコード');
ヘッダー・フッターを完成させる
サイトロゴを設定する
ヘッダーのロゴ画像を管理画面で登録できるようにします。
WordPressには「カスタムロゴ」という機能が標準で備わっています。デフォルトでは非表示になっているため、functions.phpで有効化します。
add_action('after_setup_theme', function(){
add_theme_support('custom-logo');
});
【外観>カスタマイズ】の「サイト基本情報」にて、ロゴ画像が設定できるようになりました。
これで画像のアップロードができますが、SVGをアップロードすると「このファイルタイプをアップロードする権限がありません。」というエラーが表示されます。
ロゴに限らず、SVGを使いたい場合はfunctions.phpに次の記述を追加します。
add_filter('upload_mimes', function($mimes){
$mimes['svg'] = 'image/svg+xml';
return $mimes;
});
設定したロゴ画像は、次のテンプレートタグで出力できます。
the_custom_logo();
グローバルナビゲーションを設定する
ヘッダーのナビゲーションを管理画面で登録できるようにします。
カスタムロゴと同様「メニュー」という機能が標準で備わっているので、まずはこれを有効化します。
add_action('after_setup_theme', function(){
add_theme_support('menus');
});
【外観>メニュー】にて、メニューを登録できるようになりました。
登録したメニューは、次のテンプレートタグで出力できます。
wp_nav_menu();
※メニューを複数登録する場合はもう少し複雑なコードになります。
SNSリンクを設定する
フッターのSNSリンクを管理画面で登録できるようにします。
これは色々な実装方法が考えられますが、今回は次の使っていない「固定ページ」内に設定用のページを作り、カスタムフィールドでURLの入力欄を設けます。
この場合、テンプレートファイルに表示させるときは get_field()
や the_field()
の第二引数に、固定ページのIDを指定する必要があります。
//固定ページのIDが10の場合
the_field('フィールド名','post_10');
おまけ:ヘッダー・フッターを外部ファイル化する
通常、WordPressのテーマ開発では、トップページ・一覧ページ・詳細ページ…など役割ごとに複数のテンプレートファイルを作ります。
そのため、ヘッダーやフッターなど全てのページで共通して使われる要素は、外部ファイル化して読み込むのが一般的です。
今回はシングルページのため特に外部ファイル化するメリットはありませんが、一般的なファイル構成として知っておくとよいでしょう。
//header.phpの読み込み
get_header();
//footer.phpの読み込み
get_footer();
//sidebar.phpの読み込み
get_sidebar();
//その他、任意の外部ファイルの読み込み(例:abc.php)
//get_abc();では表示できないので注意
get_template_part('abc');