name = 'bbutton'; /* * label (string) Multiple words, can include spaces, visible when selecting a field type */ $this->label = __('Button','acf-bootstrap-button'); /* * category (string) basic | content | choice | relational | jquery | layout | CUSTOM GROUP NAME */ $this->category = __('Bootstrap','acf-bootstrap-button'); /* * defaults (array) Array of default settings which are merged into the field object. These are used later in settings */ $this->defaults = array( 'bootstrap_version' => 3, 'allow_advanced_3'=> array( 'text', 'tag', 'rel', 'style', 'size', 'block', 'active_state', 'disabled_state', 'css_class' ), 'allow_advanced_4'=> array( 'text', 'tag', 'rel', 'style', 'outline', 'size', 'block', 'active_state', 'disabled_state', 'css_class' ), 'default_text' => '', 'default_tag' => 'a', 'default_rel' => '', 'default_style_3' => 'default', 'default_style_4' => 'primary', 'default_outline_4' => 0, 'default_size_3' => '', 'default_size_4' => '', 'default_block' => 0, 'default_active_state' => 0, 'default_disabled_state' => 0, 'default_css_class' => '', ); /* * l10n (array) Array of strings that are used in JavaScript. This allows JS strings to be translated in PHP and loaded via: * var message = acf._e('FIELD_NAME', 'error'); */ $this->l10n = array( 'insert_link' => __('Insert Link', 'acf-bootstrap-button'), 'edit_link' => __('Edit Link', 'acf-bootstrap-button'), 'yes' => __('Yes', 'acf-bootstrap-button'), 'no' => __('No', 'acf-bootstrap-button'), ); /* * settings (array) Store plugin settings (url, path, version) as a reference for later use with assets */ $this->settings = $settings; // do not delete! parent::__construct(); } /** * render_field_settings() * * Create extra settings for your field. These are visible when editing a field * * @type action * @since 3.6 * @date 23/01/13 * * @param $field (array) the $field being edited * @return n/a */ function render_field_settings( $field ) { /* * acf_render_field_setting * * This function will create a setting for your field. Simply pass the $field parameter and an array of field settings. * The array of settings does not require a `value` or `prefix`; These settings are found from the $field array. * * More than one setting can be added by copy/paste the above code. * Please note that you must also have a matching $defaults value for the field name (font_size) */ acf_render_field_setting( $field, array( 'label' => __("Bootstrap Version",'acf-bootstrap-button'), 'instructions' => __("Choose the bootstrap version of your theme.",'acf-bootstrap-button'), 'type' => 'radio', 'layout' => 'horizontal', 'name' => 'bootstrap_version', 'choices' => array( 3 => __( 'Bootstrap 3', 'acf-bootstrap-button' ), 4 => __( 'Bootstrap 4', 'acf-bootstrap-button' ), ) )); acf_render_field_setting( $field, array( 'label' => __("Allow Advanced Options",'acf-bootstrap-button'), 'instructions' => __("Display advanced button options (text, tag, rel, style, size, block, active state, disabled state and css class).",'acf-bootstrap-button'), 'type' => 'checkbox', 'layout' => 'horizontal', 'name' => 'allow_advanced_3', 'choices' => array( 'text' => __('Text', 'acf-bootstrap-button'), 'tag' => __("Tag",'acf-bootstrap-button'), 'rel' => __("Rel",'acf-bootstrap-button'), 'style' => __("Style",'acf-bootstrap-button'), 'size' => __("Size",'acf-bootstrap-button'), 'block' => __("Block",'acf-bootstrap-button'), 'active_state' => __("Active State",'acf-bootstrap-button'), 'disabled_state' => __("Disabled State",'acf-bootstrap-button'), 'css_class' => __("CSS Class",'acf-bootstrap-button'), ) )); acf_render_field_setting( $field, array( 'label' => __("Allow Advanced Options",'acf-bootstrap-button'), 'instructions' => __("Display advanced button options (text, tag, rel, style, outline, size, block, active state, disabled state and css class).",'acf-bootstrap-button'), 'type' => 'checkbox', 'layout' => 'horizontal', 'name' => 'allow_advanced_4', 'choices' => array( 'text' => __('Text', 'acf-bootstrap-button'), 'tag' => __("Tag",'acf-bootstrap-button'), 'rel' => __("Rel",'acf-bootstrap-button'), 'style' => __("Style",'acf-bootstrap-button'), 'outline' => __("Outline",'acf-bootstrap-button'), 'size' => __("Size",'acf-bootstrap-button'), 'block' => __("Block",'acf-bootstrap-button'), 'active_state' => __("Active State",'acf-bootstrap-button'), 'disabled_state' => __("Disabled State",'acf-bootstrap-button'), 'css_class' => __("CSS Class",'acf-bootstrap-button'), ) )); acf_render_field_setting( $field, array( 'label' => __("Default Button Text",'acf-bootstrap-button'), 'instructions' => __("Set the default text of the button when you create a new button.",'acf-bootstrap-button'), 'type' => 'text', 'name' => 'default_text', )); acf_render_field_setting( $field, array( 'label' => __("Default Tag",'acf-bootstrap-button'), 'instructions' => __("Set the default button tag when creating a new button.",'acf-bootstrap-button'), 'type' => 'select', 'name' => 'default_tag', 'choices' => array( 'a' => __("Link",'acf-bootstrap-button'), 'button' => __("Button",'acf-bootstrap-button'), 'input' => __("Input",'acf-bootstrap-button'), 'submit' => __("Submit",'acf-bootstrap-button'), 'reset' => __("Reset",'acf-bootstrap-button'), ) )); acf_render_field_setting( $field, array( 'label' => __("Default Rel",'acf-bootstrap-button'), 'instructions' => __("Set the default button relationship when creating a new button.",'acf-bootstrap-button'), 'type' => 'select', 'name' => 'default_rel', 'choices' => array( '' => __("No Rel",'acf-bootstrap-button'), 'alternate' => __("Alternate",'acf-bootstrap-button'), 'author' => __("Author",'acf-bootstrap-button'), 'bookmark' => __("Bookmark",'acf-bootstrap-button'), 'external' => __("External",'acf-bootstrap-button'), 'help' => __("Help",'acf-bootstrap-button'), 'license' => __("License",'acf-bootstrap-button'), 'next' => __("Next",'acf-bootstrap-button'), 'nofollow' => __("Nofollow",'acf-bootstrap-button'), 'noreferrer' => __("Noreferrer",'acf-bootstrap-button'), 'noopener' => __("Noopener",'acf-bootstrap-button'), 'prev' => __("Prev",'acf-bootstrap-button'), 'search' => __("Search",'acf-bootstrap-button'), 'tag' => __("Tag",'acf-bootstrap-button'), ) )); acf_render_field_setting( $field, array( 'label' => __("Default Style",'acf-bootstrap-button'), 'instructions' => __("Set the default button style when creating a new button.",'acf-bootstrap-button'), 'type' => 'select', 'name' => 'default_style_3', 'choices' => array( 'btn-default' => __("Default",'acf-bootstrap-button'), 'btn-primary' => __("Primary",'acf-bootstrap-button'), 'btn-success' => __("Success",'acf-bootstrap-button'), 'btn-info' => __("Info",'acf-bootstrap-button'), 'btn-warning' => __("Warning",'acf-bootstrap-button'), 'btn-danger' => __("Danger",'acf-bootstrap-button'), 'btn-link' => __("Link",'acf-bootstrap-button'), ) )); acf_render_field_setting( $field, array( 'label' => __("Default Style",'acf-bootstrap-button'), 'instructions' => __("Set the default button style when creating a new button.",'acf-bootstrap-button'), 'type' => 'select', 'name' => 'default_style_4', 'choices' => array( 'btn-primary' => __("Primary",'acf-bootstrap-button'), 'btn-secondary' => __("Secondary",'acf-bootstrap-button'), 'btn-success' => __("Success",'acf-bootstrap-button'), 'btn-danger' => __("Danger",'acf-bootstrap-button'), 'btn-warning' => __("Warning",'acf-bootstrap-button'), 'btn-info' => __("Info",'acf-bootstrap-button'), 'btn-light' => __("Light",'acf-bootstrap-button'), 'btn-dark' => __("Dark",'acf-bootstrap-button'), 'btn-link' => __("Link",'acf-bootstrap-button'), ) )); acf_render_field_setting( $field, array( 'label' => __("Default Outline",'acf-bootstrap-button'), 'instructions' => __("Set the default button outline when creating a new button.",'acf-bootstrap-button'), 'type' => 'radio', 'layout' => 'horizontal', 'name' => 'default_outline_4', 'choices' => array( 1 => __( 'Yes', 'acf-bootstrap-button' ), 0 => __( 'No', 'acf-bootstrap-button' ), ) )); acf_render_field_setting( $field, array( 'label' => __("Default Size",'acf-bootstrap-button'), 'instructions' => __("Set the default size when creating a new button.",'acf-bootstrap-button'), 'type' => 'select', 'name' => 'default_size_3', 'choices' => array( '' => __("Default",'acf-bootstrap-button'), 'btn-lg' => __("Large",'acf-bootstrap-button'), 'btn-sm' => __("Small",'acf-bootstrap-button'), 'btn-xs' => __("Extra Small",'acf-bootstrap-button'), ) )); acf_render_field_setting( $field, array( 'label' => __("Default Size",'acf-bootstrap-button'), 'instructions' => __("Set the default size when creating a new button.",'acf-bootstrap-button'), 'type' => 'select', 'name' => 'default_size_4', 'choices' => array( '' => __("Default",'acf-bootstrap-button'), 'btn-lg' => __("Large",'acf-bootstrap-button'), 'btn-sm' => __("Small",'acf-bootstrap-button'), ) )); acf_render_field_setting( $field, array( 'label' => __("Default Block Level",'acf-bootstrap-button'), 'instructions' => __("Set the default block level button when creating a new button.",'acf-bootstrap-button'), 'type' => 'radio', 'layout' => 'horizontal', 'name' => 'default_block', 'choices' => array( 1 => __( 'Yes', 'acf-bootstrap-button' ), 0 => __( 'No', 'acf-bootstrap-button' ), ) )); acf_render_field_setting( $field, array( 'label' => __("Default Active State",'acf-bootstrap-button'), 'instructions' => __("Set active state as default when creating a new button.",'acf-bootstrap-button'), 'type' => 'radio', 'layout' => 'horizontal', 'name' => 'default_active_state', 'choices' => array( 1 => __( 'Yes', 'acf-bootstrap-button' ), 0 => __( 'No', 'acf-bootstrap-button' ), ) )); acf_render_field_setting( $field, array( 'label' => __("Default Disabled State",'acf-bootstrap-button'), 'instructions' => __("Set disabled state as default when creating a new button.",'acf-bootstrap-button'), 'type' => 'radio', 'layout' => 'horizontal', 'name' => 'default_disabled_state', 'choices' => array( 1 => __( 'Yes', 'acf-bootstrap-button' ), 0 => __( 'No', 'acf-bootstrap-button' ), ) )); acf_render_field_setting( $field, array( 'label' => __("Default CSS Class",'acf-bootstrap-button'), 'instructions' => __("Set default button css class when creating a new button.",'acf-bootstrap-button'), 'type' => 'text', 'name' => 'default_css_class', )); } /** * render_field() * * Create the HTML interface for your field * * @param $field (array) the $field being rendered * * @type action * @since 3.6 * @date 23/01/13 * * @param $field (array) the $field being edited * @return n/a */ function render_field( $field ) { // defaults? $field = array_merge($this->defaults, $field); // perhaps use $field['preview_size'] to alter the markup? if (!isset($field['value']['bootstrap_version'])) $field['value']['bootstrap_version'] = $field['bootstrap_version']; elseif ($field['value']['bootstrap_version'] != $field['bootstrap_version']) $field['value']['bootstrap_version'] = $field['bootstrap_version']; $bv = $field['value']['bootstrap_version']; $field['value']['text'] = (isset($field['value']['text'])) ? $field['value']['text'] : $field['default_text']; $field['value']['tag'] = (isset($field['value']['tag'])) ? $field['value']['tag'] : $field['default_tag']; $field['value']['rel'] = (isset($field['value']['rel'])) ? $field['value']['rel'] : $field['default_rel']; $field['value']['style_' . $bv] = (isset($field['value']['style_' . $bv])) ? $field['value']['style_' . $bv] : $field['default_style_' . $bv]; if ($bv == 4) $field['value']['outline_' . $bv] = (isset($field['value']['outline_' . $bv])) ? $field['value']['outline_' . $bv] : $field['default_outline_' . $bv]; $field['value']['size_' . $bv] = (isset($field['value']['size_' . $bv])) ? $field['value']['size_' . $bv] : $field['default_size_' . $bv]; $field['value']['block'] = (isset($field['value']['block'])) ? $field['value']['block'] : $field['default_block']; $field['value']['active_state'] = (isset($field['value']['active_state'])) ? $field['value']['active_state'] : $field['default_active_state']; $field['value']['disabled_state'] = (isset($field['value']['disabled_state'])) ? $field['value']['disabled_state'] : $field['default_disabled_state']; $field['value']['css_class'] = (isset($field['value']['css_class'])) ? $field['value']['css_class'] : $field['default_css_class']; $url_exists = true; if ( ! isset($field['value']['url'] ) || $field['value']['url'] == ''){ $url_exists = false; } // create Field HTML ?>
settings['url']; $version = $this->settings['version']; // register & include JS wp_register_script( 'acf-input-bbutton', "{$url}assets/js/input.js", array('acf-input'), $version ); wp_enqueue_script('acf-input-bbutton'); // register & include CSS wp_register_style( 'acf-input-bbutton', "{$url}assets/css/input.css", array('acf-input'), $version ); wp_enqueue_style('acf-input-bbutton'); } /** * input_admin_head() * * This action is called in the admin_head action on the edit screen where your field is created. * Use this action to add CSS and JavaScript to assist your render_field() action. * * @type action (admin_head) * @since 3.6 * @date 23/01/13 * * @param n/a * @return n/a */ /* function input_admin_head() { } */ /** * input_form_data() * * This function is called once on the 'input' page between the head and footer * There are 2 situations where ACF did not load during the 'acf/input_admin_enqueue_scripts' and * 'acf/input_admin_head' actions because ACF did not know it was going to be used. These situations are * seen on comments / user edit forms on the front end. This function will always be called, and includes * $args that related to the current screen such as $args['post_id'] * * @type function * @date 6/03/2014 * @since 5.0.0 * * @param $args (array) * @return n/a */ /* function input_form_data( $args ) { } */ /** * input_admin_footer() * * This action is called in the admin_footer action on the edit screen where your field is created. * Use this action to add CSS and JavaScript to assist your render_field() action. * * @type action (admin_footer) * @since 3.6 * @date 23/01/13 * * @param n/a * @return n/a */ /* function input_admin_footer() { } */ /** * field_group_admin_enqueue_scripts() * * This action is called in the admin_enqueue_scripts action on the edit screen where your field is edited. * Use this action to add CSS + JavaScript to assist your render_field_options() action. * * @type action (admin_enqueue_scripts) * @since 3.6 * @date 23/01/13 * * @param n/a * @return n/a */ /* function field_group_admin_enqueue_scripts() { } */ /** * field_group_admin_head() * * This action is called in the admin_head action on the edit screen where your field is edited. * Use this action to add CSS and JavaScript to assist your render_field_options() action. * * @type action (admin_head) * @since 3.6 * @date 23/01/13 * * @param n/a * @return n/a */ /* function field_group_admin_head() { } */ /** * load_value() * * This filter is applied to the $value after it is loaded from the db * * @type filter * @since 3.6 * @date 23/01/13 * * @param $value (mixed) the value found in the database * @param $post_id (mixed) the $post_id from which the value was loaded * @param $field (array) the field array holding all the field options * @return $value */ /* function load_value( $value, $post_id, $field ) { return $value; } */ /** * update_value() * * This filter is applied to the $value before it is saved in the db * * @type filter * @since 3.6 * @date 23/01/13 * * @param $value (mixed) the value found in the database * @param $post_id (mixed) the $post_id from which the value was loaded * @param $field (array) the field array holding all the field options * @return $value */ /* function update_value( $value, $post_id, $field ) { return $value; } */ /** * format_value() * * This filter is appied to the $value after it is loaded from the db and before it is returned to the template * * @type filter * @since 3.6 * @date 23/01/13 * * @param $value (mixed) the value which was loaded from the database * @param $post_id (mixed) the $post_id from which the value was loaded * @param $field (array) the field array holding all the field options * * @return $value (mixed) the modified value */ /* function format_value( $value, $post_id, $field ) { // bail early if no value if( empty($value) ) { return $value; } // apply setting if( $field['font_size'] > 12 ) { // format the value // $value = 'something'; } // return return $value; } */ /** * validate_value() * * This filter is used to perform validation on the value prior to saving. * All values are validated regardless of the field's required setting. This allows you to validate and return * messages to the user if the value is not correct * * @type filter * @date 11/02/2014 * @since 5.0.0 * * @param $valid (boolean) validation status based on the value and the field's required setting * @param $value (mixed) the $_POST value * @param $field (array) the field array holding all the field options * @param $input (string) the corresponding input name for $_POST value * @return $valid */ /* function validate_value( $valid, $value, $field, $input ){ // Basic usage if( $value < $field['custom_minimum_setting'] ) { $valid = false; } // Advanced usage if( $value < $field['custom_minimum_setting'] ) { $valid = __('The value is too little!','TEXTDOMAIN'), } // return return $valid; } */ /** * delete_value() * * This action is fired after a value has been deleted from the db. * Please note that saving a blank value is treated as an update, not a delete * * @type action * @date 6/03/2014 * @since 5.0.0 * * @param $post_id (mixed) the $post_id from which the value was deleted * @param $key (string) the $meta_key which the value was deleted * @return n/a */ /* function delete_value( $post_id, $key ) { } */ /** * load_field() * * This filter is applied to the $field after it is loaded from the database * * @type filter * @date 23/01/2013 * @since 3.6.0 * * @param $field (array) the field array holding all the field options * @return $field */ /* function load_field( $field ) { return $field; } */ /** * update_field() * * This filter is applied to the $field before it is saved to the database * * @type filter * @date 23/01/2013 * @since 3.6.0 * * @param $field (array) the field array holding all the field options * @return $field */ /* function update_field( $field ) { return $field; } */ /** * delete_field() * * This action is fired after a field is deleted from the database * * @type action * @date 11/02/2014 * @since 5.0.0 * * @param $field (array) the field array holding all the field options * @return n/a */ /* function delete_field( $field ) { } */ } // initialize new acf_field_bbutton( $this->settings ); // class_exists check endif; ?>