advanced custom fields(アドバンスドカスタムフィールド)

advanced custom fields(アドバンスドカスタムフィールド)の 出力の仕方

advanced custom fields(アドバンスドカスタムフィールド)の 出力の仕方を説明します。

advanced custom fields(アドバンスドカスタムフィールド)の内容を出力するページを決める

advanced custom fields(アドバンスドカスタムフィールド)を出力するテンプレートは様々選択肢があります。
固定ページ、投稿ページ、index.php 、header.php footer.php
一番楽なのは、テンプレートを作ってそれで出力する方法でしょうか?

テンプレートをどこで切り替えるか

・投稿画面のテンプレート選択で切り替える
・表示時点で動的に切り替える。
といった方法が有ります。

投稿画面のテンプレート選択で切り替える

Custom Post Templates というプラグインを入れることで投稿画面でテンプレートを選択することができるようになります。

テンプレートの作り方

テンプレートのひな形にするファイルは、page.php でも post.php でも index.php でも 構いません。
テンプレートのひな形にしたいファイルの先頭部分に以下のPHPを埋め込むだけでOKです。

固定ページで選択できるようにするテンプレートの場合
<?php
/*
Template Name: フロントページ
*/
?>


投稿ページで選択できるようにするテンプレートの場合
<?php
/*
Template Name Posts: フロントページ
*/
?>


phpのヘッダを追加したら、ファイル名を変更して保存し、テーマのフォルダーにアップロードします。

表示時点で動的に切り替える。

表示時点で動的に切り替える場合もテンプレート同様にひな形とするファイルをきめて名前を変えてテーマフォルダーにアップロードします。

テンプレートを実行時に切り替える方法

例えば、投稿ページをひな形にしているのであれば、single.php を 固定ページをひな形にしているのであれば、page.php をカスタマイズします。

<?php
if( post->ID==13 ){ // 条件は、任意で post id でもいいし、タイトルでもいいし、カテゴリーでもお好きな条件で
include(TEMPLATEPATH . '/single-diary.php');
}else if( in_category('plant') ) {
include(TEMPLATEPATH . '/single-plant.php');
}else{
include(TEMPLATEPATH . '/single-default.php');
}
?>


テンプレートは、こんな感じ
<?php get_header(); ?>
<!-- main singel default -->
<div class="container top-container shouhin-page">
<div class="row mar-b3">
<div class="col-sm-9">

<?php get_footer(); ?>


つまり、そのまんま。

あとは、このテンプレートにadvanced custom fields(アドバンスドカスタムフィールド)の出力プログラムを追加すればいいわけです。

advanced custom fields(アドバンスドカスタムフィールド)の出力

柔軟フィールドは、こちらにも書いた通り⇒advanced custom fields(アドバンスドカスタムフィールド)の出力の仕方
おさらいになるかもしれませんが、柔軟フィールドの場合は、こんな感じで処理します。
<?php
/*
Template Name Posts: ACF 柔軟コンテンツ
*/
?>
<?php get_header(); ?>
<?php
function group1_view()
{
if( has_sub_field('group1') ){
$group1text = get_sub_field('group1text');
$group1pict = get_sub_field('group1pict');
echo '<div style="border:1px solid #ccc;margin:10px;padding:10px;">';
echo '<h2>'.$group1text.'</h2>';
echo '<b>GROUP1</b><br />';
echo '<img src="'.$group1pict.'">';
echo '</div>';
echo '<div style="margin:5px 0;"></div>';
}
}
function group2_view($value)
{
if(has_sub_field('group2')){
$group2pict = get_sub_field('group2pict');
$group2text = get_sub_field('group2text');
echo '<div style="border:1px solid #ccc;margin:10px;padding:10px;">';
echo '<b>GROUP2</b><br />';
echo '<img src="'.$group2pict.'">';
echo '<br/>';
echo $group2text;
echo '</div>';
echo '<div style="margin:5px 0;"></div>';
}
}
?>
<!-- main page -->
<div id="main">
while(has_sub_field('frex')){
if( get_row_layout() == 'frexlabel1'){
group1_view();
}elseif(get_row_layout() == 'frexlabel2'){
group2_view();
}
}


ポイントは、get_row_layout で 指定されたレイアウト名を確認して、その表示モジュールを呼び出すという点です。

これで投稿画面での順番の入れ替えに対応することができます。


advanced custom fields(アドバンスドカスタムフィールド)の 出力の仕方まとめ

有料版のみでのリリースのせいか、この柔軟フィールドの情報が結構少なく結構苦労したと思いますが、
わかってしまえばなんてことない。

投稿画面での順番がどこに落ちているのかデータベースをいろいろ探りましたけど、結局有料版で機能があるので別に苦労する必要もないと。

無料版にこだわって情報を探すよりもわずか2千円前後ならば、作業手間賃を考えてもお金を出した方が安い。

ですが、柔軟フィールドを使う場面って限られていると思うんですよね。
HTMLを使えないユーザーさんにサイト情報を更新できますよ。。ぐらいは言えるけど、実際、アドバンスドカスタムフィールドをいれて使ってもらったとしても。。。実は、アドバンスドカスタムフィールドの投稿画面での表示がわかりにくいし、無駄に領域が広く分かりにくい。

専用のエントリーモジュールを作った方がユーザーフレンドリー。

と、どっちつかずの便利なようで不便なようで、わかりやすいようで、わかりにくい・・・
使う場面があって、このサイトの情報yがお役に立てば幸いです。
スポンサードリンク

関連記事一覧