WordPressのテーマ作成に関わりそうな情報をメモ書きしています。。
※目次をクリックすると目次の下部にコンテンツが表示されます。
この処理においてはWordPressは関与せず、WebサーバーとWordPressが生成した.htaccessの設定内容によって処理内容が決まる。
②そのURLではWordPressのコアファイルをロードしない場合、どのコンテンツをロードするか決めるための解析が必要になる。
Webサーバーは、index.phpを介してWordPressコアをロードし、ループのセットアップを開始する。
例)URLが”www.example.com/tag/loop”の場合、ユーザーが”loop”というキーワードのタグページを要求していると認識し、タグのテンプレートをロードし、”loop”というタグで保存されている投稿を選択してコンテンツを読み出し、タグページを出力する。
③WP_Queryオブジェクトのparse_query()メソッドによってURLからコンテンツの選択への変換が行われる。
WordPressはURLを解析し、クエリパラメータを抽出する。URLから抽出したすべてのクエリ文字列はWordPressに渡され、どのコンテンツを表示するか決定される。
④WordPressは、WP_Queryオブジェクトのget_posts()を使ってクエリ文字列から抽出したパラメータからMySQLデータベースのクエリへ変換し、コンテンツを取得する。
データベースから取得したコンテンツは、WP_Queryオブジェクト内に保存され、Loop内で使用されたり、同じ投稿の他の参照に対する速度向上のためにキャッシュされたりする。
⑤コンテンツが取得されるとWordPressはis_home()やis_page()などのすべてのis_条件タグを設定する。
⑥WordPressは、クエリのタイプとリターンされる投稿の数に基づいてテーマからテンプレートを取得する。
投稿の数が一つの場合は、シングル投稿用のテンプレートを利用したり、特定のカテゴリーに属する複数の投稿を表示する場合のテンプレートなど、それぞれ異なるテンプレートを使用する。
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); //loop content (template tags, html, etc) endwhile; endif; ?>
●if ( have_posts() ) :
・現在のページ上で表示される投稿また固定ページがあるかどうかチェック。
指定したタグやカテゴリーに対する投稿が存在しない場合もある。
●while ( have_posts() ) :
・表示するコンテンツが存在する限りループする。
・have_posts()で、処理している投稿のリストが終了したかチェック。
●the_post();
・投稿データを構築。他のWordPress関数がこのデータを利用できるようになる。
・setup_postdata()関数をコールし、著者やタグなどの投稿単位のメタデータをセットアップする。
・投稿データをセットアップする際、該当するフィルターを適用する。
・投稿データがセットアップされると、ショートコードをJavaScriptのコードに変換するプラグインや投稿データを変換するプラグインコールされる。
・投稿データが一度構築されると指定したフォーマットでそのデータを表示する事ができる。
●グローバル変数$wp_query
・データベースのクエリーからの出力は、特にパラメータとして変数が指定されていない場合は、グローバル変数$wp_queryを介してLoop内の関数から参照される。
・$wp_queryは、WP_Queryのインスタンス。
・Loopのデフォルトのクエリとして利用される。
・WordPressのテーマテンプレート内のLoop処理などでコンテンツを表示するPHP関数をテンプレートタグと呼ぶ。
・テンプレートタグによって簡単にPHPのコードを実行する事が出来る。
●代表的なテンプレートタグ
・the_permalink()
投稿のURLを表示
・the_title()
投稿のタイトルを表示
・the_ID()
投稿のIDを表示
・the_content()
投稿の内容を表示
・the_excerpt()
投稿の抜粋を表示。投稿編集画面のExcerptがブランクの場合はWordPressが自動生成。
・the_time()
投稿日時を表示
・the_author()
投稿の著者を表示
・the_tags()
投稿に付与されているタグを表示
・the_category()
投稿に付与されているカテゴリーを表示
・comment_form()
投稿のコメントフォームを表示
・WP_Queryはwp-includes/query.phpに定義されているクラス。
・これを利用してカスタムLoopを簡単に作成することが出来る。
・$wp_queryグローバル変数がWP_Queryのインスタンスとして利用される。
●カスタムLoopの例
<?php $myPosts = new WP_Query( 'posts_per_page=5' ); while ( $myPosts->have_posts() ): $myPosts->the_post(); echo '<li>'; the_title(); echo '</li>'; endwhile; ?>
●主なWP_Queryオブジェクトを利用する関数
・query_posts()
ページ内のLoopを書き換え、新しいクエリーのインスタンスと置き換える。
・get_posts()
最近の投稿あるいはパラメータに一致した投稿を取得
- テーマ作成に関わるメモ
- WordPressコアの各ファイルの概要
- WordPressで使われるテーブル一覧
- WordPressのwpdbクラスを使ってテーブル操作
- WordPressの子テーマの概要、作り方
- ヘッダー、フッターにナビゲーションメニューを追加
- カテゴリーやアーカイブページなどに前後のページへのリンクを追加
- ブートストラップ3を使って自作テーマ作成
- (1)全体概要
- (2)ブートストラップのサンプルを使ってindex.phpを作成
- (3)header.php、sidebar.php、footer.php、index.phpのテンプレートファイル作成
- (4)JavaScriptインクルードの設定
- (5)投稿本文表示用のテンプレートファイルを作成
- (6)単一投稿用(single.php)のテンプレートファイル作成
- (7)固定ページ用(page.php)のテンプレートファイル作成
- (8)検索結果表示用(search.php)のテンプレートファイル作成
- (9)アーカイブ表示用(archive.php)のテンプレートファイル作成
- (10)カテゴリー表示用(category.php)のテンプレートファイル作成
- (11)WordPressのメニュー画面でナビゲーションメニューを設定
- (12)サイトタイトル、キャッチフレーズを表示できるようにheader.phpを修正
- (13)カスタムヘッダー画像を使えるようにheader.phpを修正
- (14)404.phpテンプレートファイルを作成
- (15)記事タイトル部分のCSS設定
- (16)記事メタデータ部分のCSS設定
- (17)記事本文部分のCSS設定
- (18)前後のページへのリンクのCSS設定
- (19)前後の投稿へのリンクのCSS設定
- (20)コメント投稿フォーム、コメント表示部のCSS設定
- (21)ウィジェット部のCSS設定
- (22)アーカイブページのCSS設定
- (23)画面を左右にスライドさせるボタンのCSS設定
- Bootstrapのフリーのテーマを使ってデザインを簡単にカスタマイズ
- ブートストラップ3を使って作成したナビゲーションメニューをAngularJSを使う形に変更する方法
- 投稿にメタボックスを追加する方法