ACF:如何更改默认值/设置

ACFs : How to change default values / settings

使用高级自定义字段,

  1. 说任何时候我想要一个 图像字段 ,我需要它输出一个 数组作为默认值
  2. 或者任何时候我使用 所见即所得,我不希望它显示 媒体按钮
  3. 需要 textarea 吗?我希望它默认 无格式

我如何更改这些默认值

functions.php 有任何插件或片段示例吗?

谢谢!!

约翰

我正在使用 ACF Pro,所以我的回答不适合你...

对于您的前端字段,您可以使用 acf/format_value 钩子,并更改您想要的 $field 参数:

文本区域示例:

add_filter('acf/format_value/type=textarea', 'my_custom_acf_filter_textarea', 1, 3);
function my_custom_acf_filter_textarea($value, $post_id, $field){
    remove_filter('acf/format_value/type=textarea', 'my_custom_acf_filter_textarea', 1);
    $field['new_lines'] = '';
    $newvalue = acf_format_value($value, $post_id, $field);
    return $newvalue;
}

图片示例:

add_filter('acf/format_value/type=image', 'my_custom_acf_filter_image', 1, 3);
function my_custom_acf_filter_image($value, $post_id, $field){
    remove_filter('acf/format_value/type=image', 'my_custom_acf_filter_image', 1);
    $field['return_format'] = 'array';
    $newvalue = acf_format_value($value, $post_id, $field);
    return $newvalue;
}

请注意,您还可以使用此挂钩强制特定字段的选项:

acf/format_value/name={$field['_name']}
acf/format_value/key={$field['key']}

对于您的后端显示,请使用 acf/prepare_field :

所见即所得示例:

add_filter('acf/prepare_field/type=wysiwyg', 'my_custom_acf_filter_wysiwyg', 1);
function my_custom_acf_filter_wysiwyg($field){
    remove_filter('acf/prepare_field/type=wysiwyg', 'my_custom_acf_filter_wysiwyg', 1);
    $field['media_upload'] = 0;
    return $field;
}

对于管理员显示,您还可以针对特定字段使用:

acf/prepare_field/name={$field['name']}
acf/prepare_field/key={$field['key']}

好的,要强制设置 ACF 字段,您应该使用另一个名为 acf/update_field/ 的钩子。它像以前一样工作:

add_filter('acf/update_field/type=wysiwyg', 'my_custom_acf_filter_wysiwyg', 1);
function my_custom_acf_filter_wysiwyg($field){
    $field['media_upload'] = 0;
    return $field;
}

您可以将这些其他用于目标特定字段:

acf/update_field/name={$field['name']}
acf/update_field/key={$field['key']}

保存设置时,它们将采用您的自定义值。