scottsawyer / cmb2-field-address

CMB2 Field for address ( ref: https://github.com/CMB2/CMB2-Snippet-Library/blob/master/custom-field-types/address-field-type/class-cmb2-render-address-field.php )
2 stars 1 forks source link

CMB2 Field Address

Just a simple, repeatable address field. It's really just the snippet from CMB2 Snippet Library converted to a plugin.

Installation

Install CMB2 from the WordPress plugin directory. Then install this as a regular plugin.

Usage

  1. Instantiate a metabox in the usual way.
  2. Add the address field.
function cmb2_sample_metaboxes() {

    // Start with an underscore to hide fields from custom fields list
    $prefix = '_yourprefix_';

    /**
     * Initiate the metabox
     */
    $cmb = new_cmb2_box( array(
        'id'            => 'address_metabox',
        'title'         => __( 'Address', 'cmb2' ),
        'object_types'  => array( 'page', ), // Post type
        'context'       => 'sidebar',
        'priority'      => 'high',
        'show_names'    => true, // Show field names on the left
        // 'cmb_styles' => false, // false to disable the CMB stylesheet
        // 'closed'     => true, // Keep the metabox closed by default
    ) );

    // Address field
    $cmb->add_field( array(
        'name'       => __( 'Address Field', 'cmb2' ),
        'desc'       => __( 'field description (optional)', 'cmb2' ),
        'id'         => $prefix . 'address',
        'type'       => 'address',
        // 'repeatable'      => true,
    ) );
}

Address field

To access your address:

$address = get_post_meta( get_the_ID(), $prefix . 'address', true );

print_r( $addrsss );

// Address array
Array
(
  [location] => Company Address
  [address-1] => 123 Sesame Street
  [address-2] => Suite 120
  [city] => Sesame
  [state] => PA
  [zip] => 12345
)

Or if it's a repeater:

print_r( $address );

// Array of Addresses
Array
(
  [0] => Array
      (
          [location] => Company Address
          [address-1] => 123 Sesame Street
          [address-2] => Suite 120
          [city] => Sesame
          [state] => PA
          [zip] => 12345
      )

)