※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)」に変更するとエラーメッセージが表示される









{F5B01215-95CD-44FE-A2D9-D6AF8E86C58C:01}

{F39E421C-9091-4406-AC35-0B548E5F5428:01}

昨日 ちょうど帰った時に生放送がやっていたので見ていました。

そしてさっき関連記事を見たのでついでにブログでも書きます。

奴隷はなぜ逃げないのか-SMAP独立騒動から --- 石井 孝明



なんて刺激的なタイトル。。。

内容は見ていただければと思いますが、、、


木村拓哉、中居正広、稲垣吾郎、香取慎吾、草彅剛の5人の謝罪会見を生で見ていて、

個人的には、「一度決めた決断は変えないで欲しかった」と思います。

4人は独立したいと直感的かよく考えてか出した結論だと思うので、

是非 それを信じて行動して欲しかったなと。

私は直感を比較的信じていて、 「合っていること、後悔しないことが多い」 経験があり、より一層そう感じます。

ファンも重要ですが・・・ 「自分の人生だから、自分の気持ちを大切に生きて欲しい」です。

放送後の報道でも

「中居くんは本意ではなく謝っていた」とか、

草彅くんの「ジャニーさんへの謝罪の機会を木村くんに頂いて・・・」というのも反抗的に発言したとか、

いうのを目にする度にそう思います。

SMAP謝罪中継「ブラック企業の退職妨害と通じる面がある」労働弁護士が批判 弁護士ドットコム


http://headlines.yahoo.co.jp/hl?a=20160119-00004185-bengocom-soci

SMAP「パワハラ的」アクセス殺到BPOもダウン 日刊スポーツ


http://headlines.yahoo.co.jp/hl?a=20160119-00000127-nksports-ent



周りに流されず納得して答え出して欲しいですね。

今日は夕方仕事を早めに切り上げ、セミナーに参加してきました。

主催はホールハートさんで、

講演者は博報堂ケトル 木村健太郎さんとポップスの田中淳一さんです。

公式HP seminar.buddyz.life/event/27

{FB175657-6561-4C64-A12D-ED164BCC7994:01}


結果からいうと参加して良かったです!

実はテーマだけ見たらちょっと参加を迷ってみました。

ソーシャルグッドという言葉だけ聞くと

社会貢献的な自然保護の広告かと思ったからです笑

実際 そういう意味もありますが、

広い意味での「社会貢献をどうCMで実現するか」

というかなり大きなテーマだったように感じました。

個人的にはテーマが大きくなるほど

マズローの4大欲求でいうところの、

一番上の社会的認知などの高い次元に日本は入っているんだなと思います。

そして今後 かなり重要なテーマになると思います。

質問者のレベルも高く、コンバージョン(短期的直接的な効果)とどう折り合いをつけるかという質問もありましたが

回答の課題設定次第であるというのも納得できました。

そりゃそうだろですが、本音でみんな共感できる答えだったかなと。

無料で参加させて頂いたにも関わらず有意義でした。

明日も仕事がんばろっと!