name = 'checkbox';
$this->label = __("Checkbox",'acf');
$this->category = __("Choice",'acf');
$this->defaults = array(
'layout' => 'vertical',
'choices' => array(),
'default_value' => '',
);
// do not delete!
parent::__construct();
}
/*
* create_field()
*
* Create the HTML interface for your field
*
* @param $field - an array holding all the field's data
*
* @type action
* @since 3.6
* @date 23/01/13
*/
function create_field( $field )
{
// value must be array
if( !is_array($field['value']) )
{
// perhaps this is a default value with new lines in it?
if( strpos($field['value'], "\n") !== false )
{
// found multiple lines, explode it
$field['value'] = explode("\n", $field['value']);
}
else
{
$field['value'] = array( $field['value'] );
}
}
// trim value
$field['value'] = array_map('trim', $field['value']);
// vars
$i = 0;
$e = '';
$e .= '
';
// checkbox saves an array
$field['name'] .= '[]';
// foreach choices
foreach( $field['choices'] as $key => $value )
{
// vars
$i++;
$atts = '';
if( in_array($key, $field['value']) )
{
$atts = 'checked="yes"';
}
if( isset($field['disabled']) && in_array($key, $field['disabled']) )
{
$atts .= ' disabled="true"';
}
// each checkbox ID is generated with the $key, however, the first checkbox must not use $key so that it matches the field's label for attribute
$id = $field['id'];
if( $i > 1 )
{
$id .= '-' . $key;
}
$e .= '';
}
$e .= '
';
// return
echo $e;
}
/*
* create_options()
*
* Create extra options for your field. This is rendered when editing a field.
* The value of $field['name'] can be used (like bellow) to save extra data to the $field
*
* @type action
* @since 3.6
* @date 23/01/13
*
* @param $field - an array holding all the field's data
*/
function create_options( $field )
{
// vars
$key = $field['name'];
// implode checkboxes so they work in a textarea
if( is_array($field['choices']) )
{
foreach( $field['choices'] as $k => $v )
{
$field['choices'][ $k ] = $k . ' : ' . $v;
}
$field['choices'] = implode("\n", $field['choices']);
}
?>