親ページのスラッグ「parent」、子ページのスラッグ「parent/child」両方に何らかの処理をしたい場合。
global $wp_query;
if (strpos($wp_query->query['pagename'], 'parent') !== false) {
// 処理
}
親ページのスラッグ「parent」、子ページのスラッグ「parent/child」両方に何らかの処理をしたい場合。
global $wp_query;
if (strpos($wp_query->query['pagename'], 'parent') !== false) {
// 処理
}
WordPress のカスタム投稿タイプ。頻繁に設定するものでもなく、機会があるたび、自分で書いた古いコードやネットで再検索するのでメモ。
例えば、「ニュース」ようのカスタム投稿タイプを作るとする。「my_post_type」としている関数名は、既存の関数名と被らなければ好きな名前で。
add_action('init', 'my_post_type');
function my_post_type()
{
register_post_type(
'news',
array(
'label' => 'ニュース',
'labels' => array(
'all_items' => 'ニュース一覧',
),
'public' => true,
'menu_position' => 5,
'has_archive' => true,
)
);
}
余計なコードは書きたくないので、デフォルト値や自動的に継承される値をわざわざ書かなければ、私的にはこれが基本かな。
先の「my_post_type」関数内に、階層化カテゴリの設定も追加。「’hierarchical’ => true」がないとタグになる。
add_action('init', 'my_post_type');
function my_post_type()
{
register_post_type(
'news',
array(
'label' => 'ニュース',
'labels' => array(
'all_items' => 'ニュース一覧',
),
'public' => true,
'menu_position' => 5,
'has_archive' => true,
)
);
register_taxonomy(
'news_cat',
'news',
array(
'hierarchical' => true,
)
);
}
たとえば、「ニュース」と「メニュー」の二つを追加するなら、関数内に二つ「register_post_type」を設定すれば OK。
add_action('init', 'my_post_type');
function my_post_type()
{
register_post_type(
'news',
array(
'label' => 'ニュース',
'labels' => array(
'all_items' => 'ニュース一覧',
),
'public' => true,
'menu_position' => 5,
'has_archive' => true,
)
);
register_post_type(
'menu',
array(
'label' => 'メニュー',
'labels' => array(
'all_items' => 'メニュー一覧',
),
'public' => true,
'menu_position' => 5,
'has_archive' => true,
)
);
}
WordPress のプラグイン Advanced Custom Fields に以下のようなチェックボックスを設定したときの取得方法メモ。
フィールド名は「language」で、 値とラベルの両方を制御するようにした場合。

foreach (get_field_object('language')['choices'] as $key => $value) {
echo $key . ' => ' . $value;
}
// 出力
// 1 => HTML
// 2 => CSS
// 3 => JavaScript
※PHP 5.4 以降、関数の返り値を変数に代入しなくても角括弧で直接アクセスできる。PHP: 配列 – Manual#角括弧構文による配列要素へのアクセス
foreach (get_field_object('language')['choices'] as $value) {
echo $value;
}
// 出力
// HTML
// CSS
// JavaScript
ラジオボタンと違いチェックボックスは複数選択なので、以下のようにすると、配列である事を取得する。
echo get_field('language');
// 出力
// Array
配列なので PHP の foreach で以下のように取得するとして、ACF の「返り値」がデフォルトの「Value」のままだと、投稿時に「HTML」と「CSS」を選択した場合、文字列「1」と「2」を取得する。
foreach (get_field('language') as $value) {
echo $value . '<br>';
}
// 出力
// 1
// 2
ラベルを取得したい場合、ACF の「返り値」を「ラベル」にするか、「Both (Array)」にして、以下のようにして取得する。
foreach (get_field('language') as $array) {
echo $array['value'] . ' => ' . $array['label'] . '<br>';
}
// 出力
// 1 => HTML
// 2 => CSS
投稿時に「HTML」と「CSS」を選択した場合、 ACF の「返り値」の設定によって以下のように HTML を表示する。
Value: 1, 2
ラベル:HTML, CSS
Both (Array):Array, Array
WordPress のプラグイン Advanced Custom Fields に以下のようなラジオボタンを設定したときの取得方法メモ。
フィールド名は「language」で、 値とラベルの両方を制御するようにした場合。

foreach (get_field_object('language')['choices'] as $key => $value) {
echo $key . ' => ' . $value;
}
// 出力
// 1 => HTML
// 2 => CSS
// 3 => JavaScript
※PHP 5.4 以降、関数の返り値を変数に代入しなくても角括弧で直接アクセスできる。PHP: 配列 – Manual#角括弧構文による配列要素へのアクセス
foreach (get_field_object('language')['choices'] as $value) {
echo $value;
}
// 出力
// HTML
// CSS
// JavaScript
ACF の「返り値」がデフォルトの「Value」のままだと、投稿時に「HTML」を選択したとして、以下のようにすると、文字列「1」を取得する。
echo get_field('language');
// 出力
// 1
ラベルを取得したい場合、ACF の「返り値」を「ラベル」にするか、「Both (Array)」にして、以下のようにして取得する。
echo get_field('language')['label'];
// 出力
// HTML
投稿時に「HTML」を選択した場合、 ACF の「返り値」の設定によって以下のように HTML を表示する。
Value: 1
ラベル:HTML
Both (Array):1, HTML