name = 'acfe_button';
$this->label = __('Button', 'acfe');
$this->category = 'basic';
$this->defaults = array(
'button_value' => __('Submit', 'acfe'),
'button_type' => 'button',
'button_before' => '',
'button_after' => '',
'button_class' => 'button button-secondary',
'button_id' => '',
);
add_action('wp_ajax_acfe/fields/button', array($this, 'ajax_request'), 99);
add_action('wp_ajax_nopriv_acfe/fields/button', array($this, 'ajax_request'), 99);
parent::__construct();
}
function ajax_request(){
/**
* @bool/string $_POST['post_id'] Current post ID
* @string $_POST['field_key'] Button's field key
* @string $_POST['field_name'] Button's field name
*/
$field_name = acf_maybe_get_POST('field_name');
$field_key = acf_maybe_get_POST('field_key');
$post_id = acf_maybe_get_POST('post_id');
$field = acf_get_field($field_key);
do_action('acfe/fields/button', $field, $post_id);
do_action('acfe/fields/button/name=' . $field_name, $field, $post_id);
do_action('acfe/fields/button/key=' . $field_key, $field, $post_id);
die;
}
function render_field_settings($field){
// Value
acf_render_field_setting($field, array(
'label' => __('Button value', 'acfe'),
'instructions' => __('Set a default button value', 'acfe'),
'type' => 'text',
'name' => 'button_value',
'default_value' => __('Submit', 'acfe')
));
// Type
acf_render_field_setting($field, array(
'label' => __('Button type', 'acfe'),
'instructions' => __('Choose the button type', 'acfe'),
'type' => 'radio',
'name' => 'button_type',
'default_value' => 'button',
'layout' => 'horizontal',
'choices' => array(
'button' => __('Button', 'acfe'),
'submit' => __('Input', 'acfe'),
),
));
// class
acf_render_field_setting($field, array(
'label' => __('Button attributes','acf'),
'instructions' => '',
'type' => 'text',
'name' => 'button_class',
'prepend' => __('class', 'acf'),
));
// id
acf_render_field_setting($field, array(
'label' => '',
'instructions' => '',
'type' => 'text',
'name' => 'button_id',
'prepend' => __('id', 'acf'),
'_append' => 'button_class'
));
// Before HTML
acf_render_field_setting($field, array(
'label' => __('Before HTML', 'acfe'),
'instructions' => __('Custom HTML before the button', 'acfe'),
'type' => 'acfe_code_editor',
'name' => 'button_before',
'rows' => 4,
));
// After HTML
acf_render_field_setting($field, array(
'label' => __('After HTML', 'acfe'),
'instructions' => __('Custom HTML after the button', 'acfe'),
'type' => 'acfe_code_editor',
'name' => 'button_after',
'rows' => 4,
));
// Ajax
acf_render_field_setting($field, array(
'label' => __('Ajax call', 'acfe'),
'instructions' => __('Trigger ajax event on click. See documentation', 'acfe'),
'name' => 'button_ajax',
'type' => 'true_false',
'ui' => 1,
));
}
function render_field($field){
// Before
if(isset($field['button_before']) && !empty($field['button_before'])){
echo $field['button_before'];
}
$ajax = false;
$button_ajax = $field['button_ajax'];
if($button_ajax)
$ajax = 'data-ajax="1"';
// Button
if($field['button_type'] === 'button'){
echo '';
// Submit
}elseif($field['button_type'] === 'submit'){
echo '';
}
// After
if(isset($field['button_after']) && !empty($field['button_after'])){
echo $field['button_after'];
}
}
}
// initialize
acf_register_field_type('acfe_field_button');
endif;