※WordPress用PHP関数についての一覧です。メモ書きまで。
■ページの種類
①投稿ページ
・アーカイブページ
・個別投稿ページ
特徴:タグ、カテゴリーで種類づけできる
②固定ページ(サイト紹介、お問い合わせなど)
③フロントページ
■ファイルの種類
①基本ファイル
index.php
style.css
②部分ページ
header.php ヘッダー表示用
sidebar.php サイドバー表示用
footer.php フッター表示用
③アーカイブページ
archive.php アーカイブページの基本ファイル
taxonomy.php タクソノミーアーカイブ
category.php カテゴリーアーカイブ
tag.php タグアーカイブ
author.php 作成者アーカイブ
date.php 日付アーカイブ
④個別投稿ページ
single.php 個別投稿の基本ファイル
attachment.php 添付ファイル投稿
single-$posttype.php カスタム投稿
single-post.php ブログ投稿
⑤固定ページ
page.php 固定ページ表示用
⑥その他
404.php 404エラーページ
search.php 検索結果ページ
home.php ブログ投稿インデックスページ
comments-popup.php コメントポップアップページ
例)カテゴリーページの呼び出し優先順位
category-slug.php
category-ID.php
category.php
archive.php
index.php
■ファイル呼び出しコマンド
get_header() header.phpが呼び出される
get_sidebar() sidebar.phpが呼び出される
get_sidebar(''content) sidebar-content.phpが呼び出される
get_footer() footer.phpが呼び出される
get_footer(''content) footer-content.phpが呼び出される
それ以外のテンプレートファイルを呼び出したい場合
get_template_part('content') content.phpが呼び出される
■代表的なタグ
<?php the_title();?>
<?php the_content();?>
<?php the_date();?>
リンク
<?php the_permalink();?>
■関数の種類
データの出力のみを行うもの(出力にechoが必要) 例)home_url() get_the_category()
データを取得して文字列を出力するもの(出力にはecho不要) 例)bloginfo()
データを取得してHTMLで出力するもの(出力にはecho不要) 例)the_category()
the_○○関数・・・HTML要素を含めて出力する
get_○○関数・・・出力しない
is_○○関数・・・あるかどうか(条件分岐タグで使用されやすい)
■投稿を表示させるループ文
while( have_posts()) : the_post();
the_title();
the_content();
endwhile;
■よく使う関数
have_posts()
表示する投稿を抽出したデータ内で残りの投稿があるかどうか
the_post()
$wp_queryから順番にデータを取り出していく関数
get_posts
投稿を表示
is_single()
個別投稿を表示しているかどうか、引数でどの個別投稿が表示されているかも条件指定できる
is_single('1')
ID(スラッグ/タイトル)が1の個別投稿が表示されているか
is_single(array('sample-page','Hello'))
スラッグまたはタイトルがsample-pageかHelloである個別投稿が表示されているか
has_excerpt
抜粋があるかどうか
has_post_thumbnail
アイキャッチ画像があるかどうか
■フック
①フィルターフック・・・文字列を加工する処理を追加できる場所
基本関数
apply_filters(フィルターフック名、フックに渡す変数、追加の変数)
・・・プログラム処理途中にフィルターフックを設ける
例)$title = apply_filters('wp_title',$title,$sep,$seplocation);
$sep・・・区切り記号
$seplocation・・・区切り記号をタイトルの前に置くか後ろに置くか
add_filter(フィルターフック名,処理する関数,[オプション]優先度,[オプション]関数に渡す変数の数)
・・・WordPress/テーマ/プラグインで用意されているフィルターフックに処理を追加する
②アクションフック
基本関数
do_action(アクションフック名,[オプション]追加の変数)
・・・プログラム処理途中にフィルターフックを設ける
add_action(アクションフック名,処理する関数,[オプション]優先度,[オプション]関数に渡す変数の数)
・・・WordPress/テーマ/プラグインで用意されているフィルターフックに処理を追加する
------------------------------------------------------------------------------------
■ヘッダーに使われる関数
1.WordPressシステム上 関数に置き換える必要があるもの
wp_head,get_template_directory_uri,home_uri
2.ページによって表示するデータが異なるもの
wp_title,body_class
①bloginfo()
例)<?php bloginfo('charset'); ?>
url ウェブサイトのURL
name ウェブサイトタイトル
description ウェブサイトの説明
pingback_url ピンバックURL
charset ウェブサイト文字コード
language ウェブサイト言語
②wp_title()
例)<?php wp_title('|', true, 'right'); ?>
出力結果)
トップページ <title>サイトのタイトル|キャッチフレーズ</title>
カテゴリーアーカイブ <title>カテゴリー名|キャッチフレーズ</title>
個別投稿ページ <title>個別投稿のタイトル|キャッチフレーズ</title>
wp_title([オプション]区切り文字,[オプション]出力有無,[オプション]区切り文字の位置)
③get_template_directory_uri()
出力結果は「http://○○.com/wp-content/themes/テーマ名」
例)<script src="<?php echo esc_url(get_templeate_directory_uri());?>/js/html5.js"></script>
出力結果)<script src="http://○○.com/wp-content/themes/テーマ名/js/html5.js"></script>
④wp_head() 例)<?php wp_head?>
header.phpに必ず記入しなければならない関数
⑤body_class()
そのページがどのようなページ下を示す文字列をスタイルシート用のクラス属性として出力
例)<body <?php body_class();?>>
出力結果)<body class="home blog">
⑥home_url()
ブログのトップページURLを返す関数
例)<a href="<?php echo esc_url(home_url('/'));?>" rel="home">
出力結果)<a href="http://○○.com/" rel="home">
⑦CSSの指定はfunctions.php
⑧wp_enqueue_style()
wp_enqueue_style(ハンドル名,URL,依存関係,バージョン,メディア)
ハンドル名・・・システム上の名前
URL(オプション)・・・スタイルシートURL。初期値はfalse
依存関係(オプション)・・・このCSSより前に呼び出すCSS。初期値は空の配列
バージョン(オプション)・・・CSSのバージョン。初期値はfalse
メディア(オプション)・・・CSSにつけるメディアタイプ
⑨wp_enqueue_script()
wp_enqueue_script(ハンドル名,URL,依存関係,バージョン,メディア)
ハンドル名・・・システム上の名前
URL(オプション)・・・JavascriptURL。初期値はfalse
依存関係(オプション)・・・このJavascriptより前に呼び出すCSS。初期値は空の配列
バージョン(オプション)・・・Javascriptのバージョン。初期値はfalse
メディア(オプション)・・・Javascriptにつけるメディアタイプ
例)functions.php上での記入
function sampletheme_scripts(){
wp_enqueue_style();
wp_enqueue_script();
}
add_action('wp_enqueue_scripts','sampletheme_scripts');
■ナビゲーションで記述するコード
カスタムメニューを有効にするには下記 作業が必要
①functions.phpでメニュー機能を有効にする
②テンプレートでメニューを出力したい箇所にコードを記入
③管理画面でメニュー設定
①functions.phpでメニュー機能を有効にする
register_nav_menus(場所)
array(スラッグ=>表示名)のように連想配列で指定する
例)functions.php上での記入
function sampletheme_setup(){
register_nav_menus(array(
'primary' => 'メインメニュー'
));
}
add_action('after_setup_theme','sampletheme_setup');
②テンプレートページで出力
wp_nav_menu(設定)
表示するメニューとHTMLを指定する連想配列
例)
<?php wp_nav_menu(array('theme_location' => 'primary', 'menu_class' => 'nav-menu' ));?>
③管理画面でメニュー項目設定
■アーカイブ表示で記述するコード
①記事を表示するループ処理
<?php if(have_posts()):
while(have_posts()) : the_post();
get_template_part('content');
endwhile;
?>
②get_template_part(名前1,名前2)
名前1・・・ファイル名
名前2・・・ファイル名、オプション
例)get_template_part('content')
content.phpが読み込まれる
例)get_template_part('content','part')
content-part.phpが読み込まれる
③<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
the_ID()・・・投稿IDを出力
post_class()・・・クラス属性を出力
④<?php the_post_thumbnail(); ?>
アイキャッチ画像を出力
<?php the_post_thumbnail(サイズ,属性); ?>
サイズ(オプション)・・・画像サイズ。キーワード(thumbnail,medium,large,full)または配列(array(100,100))で指定、初期値はpost-thumbnail
属性(オプション)・・・連想配列で指定(array('alt'=>'thumbnail')など)、初期値はなし
⑤the_title()
投稿タイトルを表示
the_title(前の文字列,後ろの文字列,出力の有無)
前の文字列・・・タイトル前に記述する文字列を指定。初期値なし
後ろの文字列・・・タイトル後に記述する文字列を指定。初期値なし
出力の有無・・・trueで出力、falseで出力しない。初期値はtrue
⑥get_permalink(記事ID)
記事ID(オプション)・・・URLを取得する記事IDを指定。初期値は表示中の記事
⑦<?php the_date();?>
投稿日の表示
the_date(表示形式、前の文字列、後ろの文字列、出力の有無)
表示形式(オプション)・・・PHPのdate関数と同様に引数を指定できる。初期値はWordPress管理画面の設定
前の文字列(オプション)・・・日付の前の文字列
後ろの文字列(オプション)・・・日付の後ろの文字列
出力の有無(オプション)・・・trueで出力,faleseで非出力
⑧the_content('続きを読む');
the_content(続きのテキスト,moreの前を削るかどうか)
続きのテキスト・・・個別投稿でない場合に削るテキスト。初期値は(さらに・・・)
moreの前を削るかどうか・・・trueにするとリンクで個別投稿に飛んだ際にmoreタグ以降の本文のみを表示。初期値はfalseで記事全体を表示
⑨投稿タグの表示
<?php the_tags('<footer class="entry-meta"><span class="tag-links">','','</span></footer>');?>
the_tags(前の文字列,区切り文字,後ろの文字列)
前の文字列(オプション)・・・タグの前に表示される文字列。初期値は「タグ:」
区切り文字(オプション)・・・複数のタグがある場合の区切り文字。初期値は「」
後ろの文字列(オプション)・・・タグの後ろに表示する文字列。初期値はなし
⑩ループ後の処理
<?php previous_posts_link('<span class="meta-nav">←</span>新しい投稿');?>
<?php next_posts_link('古い投稿<span class="meta-nav">→</span>');?>
previous_posts_link(リンクテキスト)
リンクテキスト(オプション)・・・リンクのテキスト。初期値は「«前のページ」
next_posts_link(リンクテキスト,最大ページ)
リンクテキスト(オプション)・・・リンクのテキスト。初期値は「次ページヘ»」
最大ページ(オプション)・・・リンクを表示する最大ページ。初期値は0
■個別投稿表示で記述するコード
①前後の記事へのリンク出力
previous_post_link('%link','<span class="meta-nav">前の記事</span>%title');
next_post_link('%link','<span class="meta-nav">次の記事</span>%title');
previous_post_link(書式,リンクテキスト,同カテゴリーか,除外カテゴリー)
書式(オプション)・・・リンク文字の書式で「%link」は第二引数に置換される。初期値は「«%link」
リンクテキスト(オプション)・・・リンク文字列で「%title」は記事のタイトルに置換される。初期値は「%title」
同カテゴリーか(オプション)・・・同じカテゴリーの前の記事を表示する場合はtrue。初期値はfalse
除外カテゴリー(オプション)・・・表示から除外するカテゴリーIDで指定。初期値はなし
next_post_link(書式,リンクテキスト,同カテゴリーか,除外カテゴリー)
書式(オプション)・・・リンク文字の書式で「%link」は第二引数に置換される。初期値は「%link»」
リンクテキスト(オプション)・・・リンク文字列で「%title」は記事のタイトルに置換される。初期値は「%title」
同カテゴリーか(オプション)・・・同じカテゴリーの前の記事を表示する場合はtrue。初期値はfalse
除外カテゴリー(オプション)・・・表示から除外するカテゴリーIDで指定。初期値はなし
②コメントの表示
if(comments_open() || get_comments_number()) ←コメント機能が有効、またはコメントが存在する場合はコメントテンプレート出力
comments_template();
}
get_comments_number(投稿ID)
投稿ID(オプション)・・・コメント数を取得する投稿IDを指定。初期値は現在表示中の投稿ID
■固定ページ表示で記述するコード
特に無し
■サイドバーに記述するコード
ウィジェットの出力するための順番
1.functions.php でウィジェットエリアを登録
2.sidebar.phpでウィジェットの出力コードを記述
3.管理画面でウィジェットの内容を設定
①.functions.php でウィジェットエリアを登録
function sampletheme_widgets_init(){
register_sidebar( array(
'name' => 'コンテンツサイドバー',
'id' => 'sidebar-right',
'description' => '右サイドバーに表示するウィジェット',
'before_widgets' => '<aside id="%1$s" class="widgets %2$s">',
'after_widgets' => '</aside>',
'before_title' => '<h1 class="widgets-title">',
'after_title' => '</h1>'
));
}
add_action('widgets_init','sampletheme_widgets_init')
name・・・管理画面で表示される名前
id・・・ウィジェットID
description・・・管理画面に表示される説明文
class・・・スタイルシート用のクラス名
before_widgets ・・・ウィジェット前の文字列。初期値は「<li id="%1$s" class="widgets %2$s">」、%1$sは各ウィジェットに付与されるID。
after_widgets ・・・ウィジェットの後ろの文字列。初期値は「</li>\n」
before_title ・・・ウィジェットのタイトルの前の文字列。初期値は「<h2 class="widgetstitle"」
after_title ・・・ウィジェットのタイトルの後ろの文字列。初期値は「</h2>\n」
②テンプレートファイルへの記述
is_active_sidebar(サイドバーID)
サイドバーID・・・register_sidebar()で指定したサイドバーID。①を参照。
dynamic_sidebar(サイドバーID)
サイドバーID・・・dynamic_sidebar()で指定したサイドバーID
出力するコード例)
<?php if(is_active_sidebar('footer-1')){
dynamic_sidebar('footer-1');
}?>
③管理画面でウィジェット登録
■フッターに記述するコード
<?php wp_footer(); ?>
footer.phpに必ず記入する必要がある。
■カスタム投稿タイプを作成するコード
①カスタム投稿タイプを登録
function sampletheme_post_type(){
register_post_type('bookreview',array(
'labels' => array('name' => '書評'),
'public' => true,
'menu_position' => 6,
'supports' => array('title', 'editor', 'custom-fields')
));
}
add_action('init', 'sampletheme_post_type', 1);
register_post_type(投稿タイプ,詳細設定)
投稿タイプ・・・登録する投稿名をアルファベットで指定
詳細設定・・・投稿タイプの様々な設定を連想配列で指定
labels・・・管理画面のメニュー等の表示名を連想配列で指定。日本語でも可能
public・・・投稿タイプを公開する(true)、して無内部でのみ使用する(false)かを指定。初期値はfalse
menu_position・・・管理画面サイドバーのどこにメニューを表示するかを指定。初期値は「コメント」の下
supports・・・投稿編集画面で表示する項目。初期値は「'title', 'editor'」
②カスタム投稿タイプを表示するコード
post_type_exists(投稿タイプ)
投稿タイプ・・・存在するかチェックしたい投稿タイプを指定
例)<?php if(post_type_exists('bookreview')):?>
カスタム投稿タイプ bookreviewがあるかどうか確認
get_posts(取得するデータ)
取得するデータ・・・取得するデータを配列で指定
例)
$args = array('posts_per_page' => 3, 'post_type' => 'bookreview')
$myposts = get_posts($args);
posts_per_page・・・1ページに表示する投稿数
post_type・・・投稿タイプ
author・・・ユーザーID
cat・・・カテゴリーID
category_name・・・カテゴリースラッグ
投稿データを表示する場合
foreach ($myposts as $post) : ← 配列 $myposts から要素を1つづつ取り出し $post に格納
setup_postdata($post);
endforeach;
wp_reset_postdata()
setup_postdata($post)・・・取り出した投稿オブジェクト($post)に対し、the_title()などのループ内で使用するテンプレートタグが使用できる
reset_postdata()関数・・・wp_reset_postdata()で処理作業を元に戻す。
■カスタム分類を作成するコード
①カスタム分類を登録
function sampletheme_post_type(){
(カスタム投稿タイプを登録するコード)
register_taxonomy('genre','bookreview',array(
'labels' => array('name' => 'ジャンル'),
'hierarchical' => true,
));
}
add_action('init', 'sampletheme_post_type', 1);
register_taxonomy(カスタム分類、投稿タイプ、詳細設定)
カスタム分類・・・登録したいカスタム分類の名前をアルファベットで指定
投稿タイプ・・・カスタム分類を紐付ける投稿タイプ
詳細設定・・・カスタム分類の設定を連想配列で指定
labels・・・管理画面で表示する名前。日本語も可能。
hierarchical・・・「カテゴリー」のように階層のある分類にする場合はtrue、「タグ」のように階層のない分類にするならfalse
②カスタム分類を表示
the_terms(ID,タクソノミー,前の文字列,区切り文字,後ろの文字列)
ID・・・カスタム分類を取得したい投稿のIDを指定
タクソノミー・・・カスタム分類名を指定
前の文字列・・・タクソノミーの前に表示する文字列を指定。初期値はなし
区切り文字・・・複数のタクソノミーがある場合の区切り文字。初期値は「,」
後ろの文字列・・・タクソノミーの後ろに表示される文字列を指定。初期値はなし
■カスタムフィールドを表示するコード
①カスタムフィールドをテーブルに出力
get_post_meta(投稿ID,カスタムフィールド名,文字列を返すかどうか)
投稿ID・・・データを取得したい投稿のIDを指定。ループ内は$post->IDで取得できる
カスタムフィールド名・・・取得したいカスタムフィールドを指定
文字列を返すかどうか(オプション)・・・trueはカスタムフィールドの値を文字列で、falseは配列で返す。初期値はfalse
■検索結果を表示するコード
<?php the_search_query ?>・・・検索キーワードを出力
<?php get_search_form(出力)?>
出力(オプション)・・・出力する場合はtrue、しない場合はfalse、初期値はtrue
■functions.phpに記述するコード
add_editor_style(スタイルシート)
スタイルシート・・・登録スタイルシート名。複数登録する場合は配列で指定。
add_theme_support(機能、詳細設定)
機能・・・テーマに追加する機能。post-format post-thumbnail custom-background custom-header automatic-feed-links menus html5など
詳細設定・・・機能ごとに異なる。
set_post_thumbnail_size(幅、高さ、クロップするか)
幅・・・アイキャッチ画像の幅をピクセルで指定
高さ・・・アイキャッチ画像の高さをピクセルで指定
クロップするか(オプション)・・・クロップする場合はtrue、しない場合はfalse
■エラー対応
エラーメッセージを表示させるためには
wp-config.phpの「define('WP_DEBUG',false)」から「define('WP_DEBUG',true)」に変更するとエラーメッセージが表示される
- WordPressユーザーのためのPHP入門 はじめから、ていねいに。/エムディエヌコーポレーション

- ¥2,592
- Amazon.co.jp
- PHPによるWordPressカスタマイズブック―3.x対応/ソシム

- ¥3,024
- Amazon.co.jp
- WordPress 仕事の現場でサッと使える! デザイン教科書 (Webデザイナー養成講座)/技術評論社

- ¥3,002
- Amazon.co.jp
- Web担当者のためのWordPressがわかる本 あらゆるビジネスサイトで使える企画・設計・制.../翔泳社

- ¥2,570
- Amazon.co.jp
- 本格ビジネスサイトを作りながら学ぶ WordPressの教科書 Ver.4.x対応版/SBクリエイティブ

- ¥3,024
- Amazon.co.jp
- WordPressデザインブック HTML5&CSS3準拠 (WordPress DESIGN.../ソシム

- ¥2,808
- Amazon.co.jp










