クロピグログ

職業訓練で学んだことまとめ

【WordPress授業五日目】オリジナルテーマ2、WP特有のルール3

簡単にできるテーマ:予算・工数 小

 

 制作手順

 

オリジナルテーマ作成 

作成準備

001:オリジナルテーマの構成 | JOBTECH.JP
002:オリジナルテーマ情報を記述 | JOBTECH.JP

 

HTMLコーディング

003:外部ファイルのURLを関数で取得 | JOBTECH.JP

 

必須関数

004:WordPressテーマ必須関数 | JOBTECH.JP

 

表示用メインループ

005:表示用メインループ設置 | JOBTECH.JP

 

アイキャッチ機能
006:アイキャッチ機能を使用可能にする | JOBTECH.JP

 

トップページを固定ページに変更

007:トップページの設定 | JOBTECH.JP

 

-----------------------------------昨日はここまで-------------------------------------------

 

表示用サブループ

008:表示用サブループ設置 | JOBTECH.JP
009:メニュー機能を使用可能にする | JOBTECH.JP

 

カスタムメニュー

010:共通するヘッダーとフッターをパーツ化して読み込む | JOBTECH.JP

 

共通パーツをモジュール化

011:投稿一覧表示用テンプレート追加 | JOBTECH.JP

 

投稿一覧専用テンプレート追加

012:トップページヘッダと配下ページでヘッダを分ける | JOBTECH.JP

 

条件分岐・各テンプレート別の対応

013:ページごとのタイトルタグを出力 | JOBTECH.JP
014:投稿詳細用テンプレート追加 | JOBTECH.JP

 

 

■表示サブループの仕組み
1.プログラマが用意した連想配列の条件にしたがってDBからページ情報を取得

 

2.取得したページ情報は自分で用意した変数に代入して利用

 

3.ループ開始と同時に「変数->have_posts()」で確認
自分で用意したページ情報オブジェクトを管理した変数のポインタ位置にページ情報があるか確認
※ポインタ移動はしない

 

4.ページ情報があったらループ内で処理をする

 

5.ループ内の最初で必ず「変数->the_post()」を呼ぶ
サブループ用インスタンスのポインタ位置のページ情報を
暗黙変数$postにオブジェクト形式で代入
※ポインタ位置を次に移動

 

6.ループ内でテンプレートタグを使って必要情報を出力

 

7.ループを繰り返す

 

8.ループ終了後にwp_reset_postdata関数を呼出す
暗黙変数$postに代入されたサブループのページ情報をリセットしてメインループで使用するデータに戻す

関数リファレンス/wp reset postdata - WordPress Codex 日本語版

 

WordPressで記事一覧取得時に使う条件 | JOBTECH.JP

<?php
$args = [
  'post_type' => 'post'//投稿
  'posts_per_page' => 3//取得する件数
  'category_name' => 'diary,bookreview'//日記と書評のみ表示
  'orderby' => 'date'//古い投稿順
  'order' => 'ASC',
];
//取得したページ情報は暗黙変数$wp_queryに格納されるので
//newで「$args」で設定した新しい情報にする
$the_query = new WP_Query($args);
 
// found_postsで投稿の全件数取得する
echo $the_query->found_posts;
// 下記で投稿の表示している件数取得する
echo $args['posts_per_page'];
?>

 

「get_option( 'sticky_posts' )」で先頭に固定表示がチェックされている投稿IDを配列で取得します。

取得した配列を「'post__in'」の値に指定し、先頭に固定表示がチェックされた投稿IDのページデータのみ取得します。

$stickyList = get_option('sticky_posts');
$args = [
  'post_type' => 'post'//投稿
  'posts_per_page' => -1//取得する件数
  //'post__in'は配列で表示するページIDを指定
  //配列が空(部屋がない)の時は条件が無視され絞り込みがかからない
  //つまり先頭に固定表示の投稿がないと全件表示になってしまう
  //そのためget_option('sticky_posts')の
  //配列を使ってif文で表示・非表示の分岐を追加しなければいけない
  'post__in' => $stickyList,
];

 

 

●ナビゲーションに記述するコード(教科書P150)

テンプレートタグ/wp nav menu - WordPress Codex 日本語版

◇front-page.php

<?php
//カスタムメニューを表示させる関数
//引数:配列
//    'theme_location'にメニューの名前
wp_nav_menu([
 'container' => false,
 'theme_location' => 'header-nav',
]);
?>

 

◇functions.php

// メニュー機能追加
// メニューに位置指定チェックボックス作成
function register_menu()
{
  //部屋の名前:メニューのスラッグ(名前)
  //部屋の名前:管理画面に表示される文字
  //連想配列なので、カスタムメニューの表示位置を複数設置できる
  //※register_nav_menusで指定
  //※register_nav_menuでは複数指定不可
  register_nav_menus([
    'header-nav' => 'ヘッダーメニュー',
    'footer-nav' => 'フッターメニュー',
  ]);
}
add_action('init''register_menu');

 

 

■ 共有パーツを部品化する際のポイント

◇よく使う部品はファイル名が決まっている

・header.php

・footer.php

sidebar.php

 

◇よく使う部品の読み込み関数名が決まっている

get_header();

get_footer();

get_sidebar();

 

◇部品読み込み関数の引数について

get_sidebar('content');   →     sidebar-content.php

get_sidebar('sub');   →     sidebar-sub.php

 

◇オリジナル部品を読み込む場合

・部品のファイル名は自由に決めて構わない

・読み込むときは「get_template_part('読み込むファイル名')」を呼出し

※読み込むファイル名の拡張子は省略可

例)

get_template_part('content');     →     content.php

get_template_part('parts/content');     →     parts/content.php