介護業界の人手不足が深刻化する中、従来の採用活動では限界があります。 「逆襲のランク」は、インターネットを活用した継続的な人材確保を実現する、4X株式会社の新しいインターネットマーケティング支援サービスです。 AIO対策×SEO対策により、求職者との接点を最大化し、採用を“運頼み”から“戦略”へと転換します。

ACFとfunctions.phpで作る柔軟なサイト構築

WordPressカスタマイズ入門:

WordPressは世界で最も利用されているCMSですが、標準機能だけでは複雑なビジネスサイトやオリジナルのサービスには対応しきれません。 そんなときに活躍するのが ACF(Advanced Custom Fields) と functions.php です。

本記事では、実際の開発現場で使われるコード例を交えながら、ACFとfunctions.phpを組み合わせて「カスタム投稿を柔軟に管理する方法」を解説していきます。

1. ACF(Advanced Custom Fields)とは?

ACFは、WordPressに自由度の高いカスタムフィールドを追加できるプラグインです。
例えば、求人サイトを構築する場合に以下のような項目を追加できます。

  • 求人タイトル
  • 勤務地
  • 給与
  • 勤務形態
  • 必要資格

これらはWordPress標準ではサポートされていませんが、ACFを使うことで簡単に入力フォームを追加できます。
さらに、管理画面上でドラッグ&ドロップで設定できるため、非エンジニアでも操作が容易です。

2. functions.phpとは?

functions.php は、WordPressテーマに組み込む「テーマ専用プログラムファイル」です。
以下のような用途で使われます。

  • カスタム投稿タイプの追加
  • 管理画面のカスタマイズ
  • ウィジェットやショートコードの定義
  • 外部APIとの連携

イメージとしては「テーマ内専用プラグイン」という立ち位置です。

3. ACF×functions.phpでできること

ACFだけでもカスタムフィールドを追加できますが、functions.phpと組み合わせるとさらに強力なカスタマイズが可能になります。

具体例:求人情報をACFで管理する

例えば「求人情報サイト」を構築するケースを考えてみましょう。

  • ACFで求人情報の項目を作成
  • functions.phpで「求人一覧を表示するショートコード」を作成
  • WordPress固定ページにショートコードを貼り付ける

これにより、管理画面で入力した求人データが自動的に一覧表示されるようになります。

4. 実際のコード例

以下は、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"]

5. よくある失敗と対策

ACFとfunctions.phpを組み合わせる際によくあるトラブルを紹介します。

① ショートコードが表示されない

原因add_shortcode の記載漏れや関数名の不一致 対策:functions.php内で定義が正しいか確認


② ACFのフィールドが表示されない

原因get_field() のフィールド名が一致していない 対策:管理画面で設定したフィールドスラッグを確認


③ 権限エラーで投稿できない

原因:カスタム投稿タイプの権限設定不足 対策capability_type や map_meta_cap を正しく設定

6. 開発をスムーズにするポイント

  1. Gitで管理する functions.phpの修正履歴を残すことで、万一のトラブル時にも復旧が容易です。
  2. ローカル環境でテスト 本番環境に直接反映せず、まずローカル環境で動作確認しましょう。
  3. ACFのエクスポート機能活用 フィールド設定をJSONとしてエクスポートすれば、他サイトへの移植が簡単です。

まとめ

ACFとfunctions.phpを組み合わせることで、WordPressは単なるブログツールから「本格的な業務システム」へと進化します。
特に、求人サイトや物件管理サイト、会員制サイトなどの構築に非常に有効です。

本記事で紹介した基本的な実装からスタートし、自分のプロジェクトに合わせてカスタマイズを加えてみましょう。

小さな一歩から始めていけば、自由自在に操れるようになります。