从数据库表中动态填充Wordpress ACF中的选择字段

时间:2016-01-11 17:00:25

标签: php mysql wordpress advanced-custom-fields

对此问题我得到了很多批评,所以我会改写它。 我在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 countiesidcounty) VALUES     (1,'巴斯和东北萨默塞特'),     (2,'贝德福德'),     (3,'布莱克本与Darwen'),     (4,'布莱克浦'),     (5,'伯恩茅斯'),     (6,'布拉克内尔森林'),     (7,' Brighton& Hove');

XX

1 个答案:

答案 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');