WEBLOG
WordPress > サイト毎の設定
Create:
Update:
カスタムフィールドの設定。Advanced Custom Fields PROと連動しています。
入力欄の設定を行う際に以前は社内規定を設けていましたが、設定を強制的に固定化しています。
特に「返り値」の設定は、WordPress管理画面に毎度確認しなくても弊社規定になるようにしています。
これらは、functions.php に読み込まれるfunctions_setup.php に記述しています。
設定を統一するための弊社の規定値です。
上記の規定を下記で強制化・固定化します。
const ACF_FIELDS = [
'textarea' => [
'new_lines' => '',
],
'radio' => [
'return_format' => 'array',
],
'select' => [
'return_format' => 'array',
],
'checkbox' => [
'return_format' => 'array',
],
'image' => [
'return_format' => 'array',
],
'gallery' => [
'return_format' => 'array',
],
'file' => [
'return_format' => 'url',
],
'post_object' => [
'return_format' => 'id',
],
'relation' => [
'return_format' => 'id',
],
'date_picker' => [
'display_format' => 'Y-m-d',
'return_format' => 'U',
],
'color_picker' => [
'return_format' => 'string',
],
];
foreach (ACF_FIELDS as $acf_name => $v) {
add_filter('acf/load_field/type=' . $acf_name, function ($field) use ($v) {
foreach ($v as $kk => $vv) {
$field[$kk] = $vv;
}
return $field;
});
}
年のプルダウンは、毎年1月1日に選択肢が変更になります。
その年を追加して、デフォルトにして・・。
これを自動で追加されるようにします。
functions.php には設定値のみ記載して functions_setup.php に記述しinclude。
設定定数「ACF_AUTO」をfunctions.phpに記載します。
const ACF_AUTO = [
'auto_year' => [
'auto_year',
//'xxx_year',
],
'auto_month' => [
'auto_month',
//'xxx_month',
],
'auto_nendo' => [
'auto_nendo',
//'xxx_nendo',
],
];
include_once 'xxx/functions_setup.php';
プルダウンの選択肢を自動で変更したい「キー」をそれぞれの配列内に記載。
年のプルダウンは、2000年スタートにしていますが、サイトによっては変更する必要があるかもしれません。
その場合も $auto_year_start を書き換えるだけです。
if (defined('ACF_AUTO')) {
foreach (ACF_AUTO as $k => $v) {
if ($k === 'auto_year') {
foreach ($v as $vv) {
// 年 auto_year
add_filter('acf/load_field/name=' . $vv, function ($field) {
$field['choices'] = [];
$auto_year_last = intval(date_i18n('Y')) + 1;
$auto_year_start = 2000;
for ($auto_year = $auto_year_last; $auto_year > $auto_year_start; $auto_year--) {
$field['choices'][$auto_year] = $auto_year . '年';
}
$field['default_value'] = intval(date_i18n('Y'));
return $field;
});
}
} elseif ($k === 'auto_month') {
foreach ($v as $vv) {
// 月 auto_month
add_filter('acf/load_field/name=' . $vv, function ($field) {
$field['choices'] = [];
for ($auto_month = 1; $auto_month <= 12; $auto_month++) {
$field['choices'][sprintf('%02d', $auto_month)] = $auto_month . '月';
}
$field['default_value'] = strval(date_i18n('m'));
return $field;
});
}
} elseif ($k === 'auto_nendo') {
foreach ($v as $vv) {
// 年度 auto_nendo
add_filter('acf/load_field/name=' . $vv, function ($field) {
// reset choices
$field['choices'] = [];
$auto_nendo_last = intval(date_i18n('Y'));
$auto_nendo_start = 2000;
for ($auto_nendo = $auto_nendo_last; $auto_nendo > $auto_nendo_start; $auto_nendo--) {
$field['choices'][$auto_nendo] = $auto_nendo . '年度';
}
$field['default_value'] = intval(date_i18n('n')) < 4 ? intval(date_i18n('Y')) - 1 : $auto_nendo_last;
// return the field
return $field;
});
}
}
}
}