WordPressは世界で最も利用されているCMSですが、標準機能だけでは複雑なビジネスサイトやオリジナルのサービスには対応しきれません。 そんなときに活躍するのが ACF(Advanced Custom Fields) と functions.php です。
本記事では、実際の開発現場で使われるコード例を交えながら、ACFとfunctions.phpを組み合わせて「カスタム投稿を柔軟に管理する方法」を解説していきます。
ACFは、WordPressに自由度の高いカスタムフィールドを追加できるプラグインです。
例えば、求人サイトを構築する場合に以下のような項目を追加できます。
これらはWordPress標準ではサポートされていませんが、ACFを使うことで簡単に入力フォームを追加できます。
さらに、管理画面上でドラッグ&ドロップで設定できるため、非エンジニアでも操作が容易です。
functions.php は、WordPressテーマに組み込む「テーマ専用プログラムファイル」です。
以下のような用途で使われます。
イメージとしては「テーマ内専用プラグイン」という立ち位置です。
ACFだけでもカスタムフィールドを追加できますが、functions.phpと組み合わせるとさらに強力なカスタマイズが可能になります。
例えば「求人情報サイト」を構築するケースを考えてみましょう。
これにより、管理画面で入力した求人データが自動的に一覧表示されるようになります。
以下は、ACFで作成した求人情報を一覧表示するためのサンプルコードです。
// functions.php に記載
if ( ! function_exists( 'job_list_shortcode' ) ) {
function job_list_shortcode( $atts ) {
// 初期設定(ショートコードの引数)
$a = shortcode_atts( [
'posts_per_page' => 10,
'taxonomy' => 'job_cat', // カスタムタクソノミー
], $atts );
// 投稿データ取得
$args = [
'post_type' => 'job', // カスタム投稿タイプ
'posts_per_page' => $a['posts_per_page'],
'tax_query' => [
[
'taxonomy' => $a['taxonomy'],
'field' => 'slug',
'terms' => $a['taxonomy'],
]
]
];
$query = new WP_Query( $args );
ob_start();
if ( $query->have_posts() ) {
echo '<div class="job-list">';
while ( $query->have_posts() ) {
$query->the_post();
echo '<div class="job-item">';
echo '<h2>' . get_the_title() . '</h2>';
echo '<p>勤務地: ' . get_field('location') . '</p>';
echo '<p>給与: ' . get_field('salary') . '</p>';
echo '</div>';
}
echo '</div>';
} else {
echo '<p>現在募集はありません。</p>';
}
wp_reset_postdata();
return ob_get_clean();
}
}
add_shortcode( 'job_list', 'job_list_shortcode' );
上記コードでは [job_list] というショートコードを作成しています。 固定ページや投稿に以下のように記載するだけで求人情報一覧を表示可能です。
[job_list posts_per_page="15"]
ACFとfunctions.phpを組み合わせる際によくあるトラブルを紹介します。
原因:add_shortcode の記載漏れや関数名の不一致 対策:functions.php内で定義が正しいか確認
原因:get_field() のフィールド名が一致していない 対策:管理画面で設定したフィールドスラッグを確認
原因:カスタム投稿タイプの権限設定不足 対策:capability_type や map_meta_cap を正しく設定
ACFとfunctions.phpを組み合わせることで、WordPressは単なるブログツールから「本格的な業務システム」へと進化します。
特に、求人サイトや物件管理サイト、会員制サイトなどの構築に非常に有効です。
本記事で紹介した基本的な実装からスタートし、自分のプロジェクトに合わせてカスタマイズを加えてみましょう。
小さな一歩から始めていけば、自由自在に操れるようになります。