name = 'button'; /* * label (string) Multiple words, can include spaces, visible when selecting a field type */ $this->label = __( 'Button', 'acf-button' ); /* * category (string) basic | content | choice | relational | jquery | layout | CUSTOM GROUP NAME. */ $this->category = 'basic'; /* * defaults (array) Array of default settings which are merged into the field object. These are used later in settings. */ $this->defaults = array( 'default_text' => '', 'allow_advanced' => array( 'type', 'target', 'color', ), 'default_target' => '', 'default_color' => 'primary', 'default_size' => '', 'default_style' => '', 'default_type' => 'post', ); /* * 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('button', 'error'); */ $this->l10n = array( 'error' => __( 'Error! Please enter a higher value', 'acf-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(); } /** * Function render_field_settings() * * Create extra settings for your field. These are visible when editing a field * * @type action * @since 1.0.0 * @since 1.7.0 Added rel and anchor to button options. * @date 23/01/13 * * @param $field (array) the $field being edited. * @return void */ public function render_field_settings( $field ) { /** * Function 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' => __( 'Allow Advanced Options', 'acf-button' ), 'instructions' => __( 'Display advanced button options (size, color, style and target)', 'acf-button' ), 'type' => 'checkbox', 'name' => 'allow_advanced', 'choices' => array( 'type' => __( 'Type', 'acf-button' ), 'target' => __( 'Target', 'acf-button' ), 'color' => __( 'Color', 'acf-button' ), 'size' => __( 'Size', 'acf-button' ), 'style' => __( 'Style', 'acf-button' ), 'class' => __( 'Class', 'acf-button' ), 'anchor' => __( 'Anchor', 'acf-button' ), 'rel' => __( 'Relationship (rel attribute)', 'acf-button' ), ), ) ); acf_render_field_setting( $field, array( 'label' => __( 'Default Button Text', 'acf-button' ), 'type' => 'text', 'name' => 'default_text', ) ); acf_render_field_setting( $field, array( 'label' => __( 'Set default target', 'acf-button' ), 'type' => 'select', 'name' => 'default_target', 'choices' => array( '' => __( 'Same Window', 'acf-button' ), '_blank' => __( 'New Window', 'acf-button' ), ), ) ); acf_render_field_setting( $field, array( 'label' => __( 'Default Color', 'acf-button' ), 'type' => 'select', 'name' => 'default_color', 'choices' => array( 'primary' => __( 'Primary', 'acf-button' ), 'secondary' => __( 'Secondary', 'acf-button' ), 'success' => __( 'Success', 'acf-button' ), 'alert' => __( 'Alert', 'acf-button' ), 'warning' => __( 'Warning', 'acf-button' ), 'info' => __( 'Info', 'acf-button' ), 'disabled' => __( 'Disabled', 'acf-button' ), ), ) ); acf_render_field_setting( $field, array( 'label' => __( 'Default Size', 'acf-button' ), 'type' => 'select', 'name' => 'default_size', 'choices' => array( 'tiny' => __( 'Tiny', 'acf-button' ), 'small' => __( 'Small', 'acf-button' ), '' => __( 'Normal', 'acf-button' ), 'large' => __( 'Large', 'acf-button' ), 'huge' => __( 'Huge', 'acf-button' ), ), ) ); acf_render_field_setting( $field, array( 'label' => __( 'Default Style', 'acf-button' ), 'type' => 'select', 'name' => 'default_style', 'choices' => array( '' => __( 'Normal', 'acf-button' ), 'expanded' => __( 'Expanded', 'acf-button' ), 'hollow' => __( 'Hollow', 'acf-button' ), 'round' => __( 'Round', 'acf-button' ), 'radius' => __( 'Radius', 'acf-button' ), ), ) ); $type_choices = array( 'custom' => __( 'Custom URL', 'acf-button' ), 'post' => __( 'Link to WordPress Content', 'acf-button' ), ); // $args = array( // 'public' => true, // '_builtin' => false, // ); // $ignore = array( // 'page', // 'post', // 'attachment', // 'acf-field', // 'acf-field-group', // ); // $cpts = get_post_types( $args, 'objects' ); // if ( $cpts ) { // foreach ( $cpts as $cpt ) { // $name = $cpt->name; // $label = $cpt->label; // $type_choices[ $name ] = $label; // } // } acf_render_field_setting( $field, array( 'label' => __( 'Default Type', 'acf-button' ), 'type' => 'select', 'name' => 'default_type', 'choices' => $type_choices, ) ); } /** * Function render_field() * * Create the HTML interface for your field * * @type action * @since 1.0.0 * @since 1.7.0 Added rel and anchor to button options. * @date 23/01/13 * * @param $field (array) the $field being rendered. * @return void */ public function render_field( $field ) { $field = array_merge( $this->defaults, $field ); // Review the data of $field. // This will show what data is available. // set defaults if values do not yet exist. if ( ! isset( $field['value']['text'] ) ) { if ( isset( $field['default_text'] ) ) { $field['value']['text'] = $field['default_text']; } else { $field['value']['text'] = ''; } } if ( ! isset( $field['value']['post'] ) ) { $field['value']['post'] = ''; } if ( ! isset( $field['value']['url'] ) ) { $field['value']['url'] = ''; } if ( ! isset( $field['value']['target'] ) ) { if ( isset( $field['default_target'] ) ) { $field['value']['target'] = $field['default_target']; } else { $field['value']['target'] = ''; } } if ( ! isset( $field['value']['color'] ) ) { if ( isset( $field['default_color'] ) ) { $field['value']['color'] = $field['default_color']; } else { $field['value']['color'] = ''; } } if ( ! isset( $field['value']['size'] ) ) { if ( isset( $field['default_size'] ) ) { $field['value']['size'] = $field['default_size']; } else { $field['value']['size'] = ''; } } if ( ! isset( $field['value']['style'] ) ) { if ( isset( $field['default_style'] ) ) { $field['value']['style'] = $field['default_style']; } else { $field['value']['style'] = ''; } } if ( ! isset( $field['value']['class'] ) ) { $field['value']['class'] = ''; } if ( ! isset( $field['value']['anchor'] ) ) { $field['value']['anchor'] = ''; } if ( ! isset( $field['value']['rel'] ) ) { $field['value']['rel'] = ''; } if ( ! isset( $field['value']['page_link'] ) ) { $field['value']['page_link'] = ''; } if ( ! isset( $field['value']['type'] ) ) { if ( isset( $field['default_type'] ) ) { $field['value']['type'] = $field['default_type']; } else { $field['value']['type'] = 'post'; } } ?>

What type of content will the button link to?

true, ); $ignore = array( 'page', 'post', 'attachment', 'acf-field', 'acf-field-group', ); $cpts = get_post_types( $args, 'objects' ); ?>
name, $ignore, true ) ) { $posttypes[] = $cpt->name; } } ?>

$posttypes, 'posts_per_page' => -1, 'order' => 'ASC', 'orderby' => 'type title', ); $myposts = get_posts( $args ); ?>
#
'primary', 'Secondary' => 'secondary', 'Success' => 'success', 'Alert' => 'alert', 'Info' => 'info', 'Warning' => 'warning', 'Disabled' => 'disabled', ); ?>
'tiny', 'Small' => 'small', 'Normal' => '', 'Large' => 'large', 'Huge' => 'huge', ); ?>
'', 'Extended' => 'extended', 'Hollow' => 'hollow', 'Round' => 'round', 'Radius' => 'radius', ); ?>
'', 'Open in new window/tab (target="_blank")' => '_blank', ); ?>
'', 'alternate' => 'alternate', 'author' => 'author', 'bookmark' => 'bookmark', 'external' => 'external', 'help' => 'help', 'license' => 'license', 'next' => 'next', 'nofollow' => 'nofollow', 'noreferrer' => 'noreferrer', 'prev' => 'prev', 'search' => 'search', 'tag' => 'tag', ); ?>
settings['url']; $version = $this->settings['version']; // register & include JS. wp_register_script( 'acf-input-button', "{$url}js/input.js", array( 'acf-input' ), $version ); wp_enqueue_script( 'acf-input-button' ); // register & include CSS. wp_register_style( 'acf-input-button', "{$url}css/input.css", array( 'acf-input' ), $version ); wp_enqueue_style( 'acf-input-button' ); } /** * Function 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 1.0.0 * @since 1.7.0 Added rel and anchor to button options. * @date 23/01/13 * * @param type $value (mixed) the value which was loaded from the database. * @param type $post_id (mixed) the $post_id from which the value was loaded. * @param type $field (array) the field array holding all the field options. * * @return type $value (mixed) the modified value. */ public function format_value( $value, $post_id, $field ) { // bail early if no value. if ( empty( $value ) || '' === $value['text'] ) { return; } // set defaults. $url = ''; $target = ''; $rel = ''; $class = 'button'; // get url - if url exists use it, if not use the page id to get permalink. if ( 'custom' === $value['type'] ) { $url = $value['url']; } else { $type = $value['type']; $url = get_permalink( $value[ $type ] ); } // get target. if ( isset( $value['target'] ) && '_blank' === $value['target'] ) { $target = ' target="_blank" '; } // get rel. if ( isset( $value['rel'] ) ) { $rel = ' rel="' . $value['rel'] . '" '; } // append size classes. if ( isset( $value['size'] ) ) { $class .= ' ' . $value['size']; } // append color classes. if ( isset( $value['color'] ) ) { $class .= ' ' . $value['color']; } // append style classes. if ( isset( $value['style'] ) ) { $class .= ' ' . $value['style']; } // append custom classes. if ( isset( $value['class'] ) ) { $class .= ' ' . $value['class']; } // append anchor. if ( isset( $value['anchor'] ) ) { $url .= '#' . $value['anchor']; } $value = '' . $value['text'] . ''; // return. return $value; } } // initializes. new ACF_Button_Field( $this->settings ); // class_exists check. endif; ?>