ACFの出力コード紹介&入力した項目が保存されない原因

ACF(Advanced Custom Fields)の出力コード紹介です。

Advanced Custom Fieldsの使い方はこちらから

目次

出力コード

■ループ内

・通常


<?php the_field('フィールド名');?>

・画像の時


<?php 
//ここからカスタムフィールドの画像呼び出し設定
function customfield_image($imageNum)
{
    $image = get_field($imageNum);
    $size = 'full';
    if ($image) {
        echo wp_get_attachment_image($image, $size);
    }
}
//ここまで
?>

<?php
//下記を画像の出力をしたい場所に記載
customfield_image('フィールド名'); ?>


■ループ外


<?php get_field('フィールド名');?>

カスタムフィールドに入力した内容が保存できない時

これは設定が間違っているというパターンもあります。

設定が間違っていないのに保存出来ない時は、max_input_varsが影響している可能性があります。

max_input_varsは、DDos攻撃を防ぐ目的で、PHP5.3.9から導入されたもので、設定数以上の変数が送信されるとその部分は削除されるようになっています。

その為、Advanced Custom Fieldsでフィールド数を多くすると、送信される量が多く保存されない!といった現象が起きます。

これの解決方法としては、サーバー内でphp.iniでmax_input_varsの数字を変更するか、.htaccessにphp_value max_input_vars 3000と記載すればOKです。

ただ、DDos攻撃を防ぐ為に導入されているので、極力変更しないことをおススメします。
不正アクセスやサイトダウンをされてしまうと、サイト運用が出来なくなりますから。

では、どうするか。

検証したところ、1つのフィールドグループに30項目くらいカスタムフィールドがあると保存されない場合があります。※ただカスタムフィールドの種類によって変動あり。


一番簡単なのは、1つのフィールドグループにカスタムフィールドの項目を20個も30個も設定せずにフィールドを複数に分ける。

これで、ほぼ解消できる可能性が高い。

これでも上手くいかない場合は、フィールドの名前(フィールドラベルとフィールド名)を変える。

これでも上手くいかない場合は、上記の方法でmax_input_varsを変える。

これでも上手くいかない場合は、お手上げ or たぶん別の設定(コードやプラグインの設定)が間違えている。

この手順で進めていけば良いかと思います。

目次