对此问题我得到了很多批评,所以我会改写它。 我在Wordpress中使用高级自定义字段(ACF)来构建表单。我的特殊问题是,在Select中我不想预先填充字段,而是在运行时从数据库中的表中动态填充它。
要构建表单组,请使用ACF的gui创建和定义表单组,其中包含一个或多个表单字段。其中一个定义为导出工作代码,然后在应用程序运行时使用此代码。导出的代码是一个数组和子数组的数组,用于定义Form的特征,不能包含动态代码。
除此之外,如果字段中的项目是“发布类型”,则ACF允许您通过“发布类型”指向并过滤,从而提供一种“选择”字段。但是,我不想将此特定数据设为帖子类型。
硬连线选择字段的创建代码示例如下。
acf_add_local_field_group(array (
'key' => 'group_568d1e1d7e7fd',
'title' => 'Course Information',
'fields' => array (
array (
'key' => 'field_568d1e2d97b99',
'label' => 'Accrediting Body',
'name' => 'joltle_course_accrediting_body',
'type' => 'select',
'instructions' => '',
'required' => 1,
'conditional_logic' => 0,
'wrapper' => array (
'width' => '',
'class' => '',
'id' => '',
),
'choices' => array (
0 => '',
1093 => 'British Institute of Cleaning Science',
1094 => 'British Oxygen Corporation (BOC)',
1095 => 'CardianBCT',
1096 => 'Chartered Institute of Environmental Health',
1097 => 'Critical Care Institute Manchester',
),
'default_value' => '0',
'allow_null' => 0,
'multiple' => 0,
'ui' => 0,
'ajax' => 0,
'placeholder' => '',
'disabled' => 0,
'readonly' => 0,
),
array (
这是'选择'我希望动态替换的数组。
我希望使用的表格和数据示例如下。
DROP TABLE IF EXISTS `counties `;
CREATE TABLE counties
(
id
bigint(20)unsigned NOT NULL AUTO_INCREMENT,
county
varchar(200)NOT NULL,
主要关键(id
)
)ENGINE = InnoDB AUTO_INCREMENT = 91 DEFAULT CHARSET = utf8;
INSERT INTO counties
(id
,county
)
VALUES
(1,'巴斯和东北萨默塞特'),
(2,'贝德福德'),
(3,'布莱克本与Darwen'),
(4,'布莱克浦'),
(5,'伯恩茅斯'),
(6,'布拉克内尔森林'),
(7,' Brighton& Hove');
XX
答案 0 :(得分:2)
这是在http://www.advancedcustomfields.com/resources/dynamically-populate-a-select-fields-choices/
找到的ACF文档中function acf_some_field( $field ) {
//Change this to whatever data you are using.
$data_from_database = array('key1' => 'value1', 'key2' => 'value2');
$field['choices'] = array();
//Loop through whatever data you are using, and assign a key/value
foreach($data_from_database as $field_key => $field_value) {
$field['choices'][$field_key] = $field_value;
}
return $field;
}
add_filter('acf/load_field/name=what_you_need', 'acf_some_field');