Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /*
- This is example how to add simple Google Maps field type.
- Most of functions are called automatically from Types plugin.
- Functions naming conventions are:
- - For basic type data (required) callback
- wpcf_fields_$myfieldname()
- Optional
- - Group form data callback
- wpcf_fields_$myfieldname_insert_form()
- - Post edit page form callback
- wpcf_fields_$myfieldname_meta_box_form()
- - Editor popup callback
- wpcf_fields_$myfieldname_editor_callback()
- - View function callback
- wpcf_fields_$myfieldname_view()
- */
- // Add registration hook
- add_filter( 'types_register_fields', 'my_types' );
- /**
- * Register custom post type on 'types_register_fields' hook.
- *
- * @param array $fields
- * @return type
- */
- function my_types( $fields ) {
- $fields['google_map'] = __FILE__;
- return $fields;
- }
- /**
- * Define field.
- *
- * @return type
- */
- function wpcf_fields_google_map() {
- return array(
- 'path' => __FILE__, // This is deprecated but should be tested for safe removal
- 'id' => 'google_map',
- 'title' => __( 'Google Map', 'wpcf' ),
- 'description' => __( 'This is additional field', 'wpcf' ),
- /*
- * Validation
- *
- * TODO Elaborate on this
- * Add examples for various usage (review needed)
- */
- 'validate' => array('required'),
- /*
- *
- *
- *
- *
- *
- *
- * Possible (optional) parameters
- */
- // Additional JS on post edit page
- 'meta_box_js' => array(// Add JS when field is active on post edit page
- 'wpcf-jquery-fields-my-field' => array(
- 'inline' => 'wpcf_fields_google_map_meta_box_js_inline', // This calls function that renders JS
- 'deps' => array('jquery'), // (optional) Same as WP's enqueue_script() param
- 'in_footer' => true, // (optional) Same as WP's enqueue_script() param
- ),
- /**
- * example how to add javascript file
- *
- 'wpcf-jquery-fields-my-field' => array(
- 'src' => get_stylesheet_directory_uri() . '/js/my-field.js', // This will load JS file
- ),
- */
- ),
- // Additional CSS on post edit page
- 'meta_box_css' => array(
- 'wpcf-jquery-fields-my-field' => array(
- 'src' => get_stylesheet_directory_uri() . '/css/my-field.css', // or inline function 'inline' => $funcname
- 'deps' => array('somecss'), // (optional) Same as WP's enqueue_style() param
- ),
- ),
- // Additional JS on group edit page
- 'group_form_js' => array(// Add JS when field is active on post edit page
- /**
- * example how to add javascript file wit callback fundtion
- *
- 'wpcf-jquery-fields-my-field' => array(
- 'inline' => 'wpcf_fields_google_map_group_form_js_inline', // This calls function that renders JS
- 'deps' => array('jquery'), // (optional) Same as WP's enqueue_script() param
- 'in_footer' => true, // (optional) Same as WP's enqueue_script() param
- ),
- */
- /**
- * example how to add javascript file
- *
- 'wpcf-jquery-fields-my-field' => array(
- 'src' => get_stylesheet_directory_uri() . '/js/my-field.js', // This will load JS file
- ),
- */
- ),
- // Additional CSS on post edit page
- 'group_form_css' => array(
- 'wpcf-jquery-fields-my-field' => array(
- 'src' => get_stylesheet_directory_uri() . '/css/my-field.css', // or inline function 'inline' => $funcname
- 'deps' => array('somecss'), // (optional) Same as WP's enqueue_style() param
- ),
- ),
- // override editor popup link (you must then load JS function that will process it)
- // 'editor_callback' => 'wpcfFieldsMyFieldEditorCallback(\'%s\')', // %s will inject field ID
- // meta key type
- 'meta_key_type' => 'INT',
- // Required WP version check
- 'wp_version' => '3.3',
- );
- }
- /**
- * Types Group edit screen form.
- *
- * Here you can specify all additional group form data if nedded,
- * it will be auto saved to field 'data' property.
- *
- * @return string
- */
- function wpcf_fields_google_map_insert_form() {
- $form['additional'] = array(
- '#type' => 'textfield',
- '#description' => 'Add some comment',
- '#name' => 'comment',
- );
- return $form;
- }
- /**
- * Overrides form output in meta box on post edit screen.
- */
- function wpcf_fields_google_map_meta_box_form( $data ) {
- $form['name'] = array(
- '#name' => 'wpcf[' . $data['slug'] . ']', // Set this to override default output
- '#type' => 'textfield',
- '#title' => __( 'Add Google Map coordinates', 'wpcf' ),
- '#description' => __( 'Your input should look something like "41.934146,12.455821"', 'wpcf' )
- );
- return $form;
- }
- /**
- * Adds editor popup callnack.
- *
- * This form will be showed in editor popup
- */
- function wpcf_fields_google_map_editor_callback( $field, $settings ) {
- ob_start();
- ?>
- <label><input type="text" name="width" value="<?php echo isset( $settings['width'] ) ? $settings['width'] : '425'; ?>" /> <?php _e( 'Width', 'wpcf' ); ?></label>
- <br />
- <label><input type="text" name="height" value="<?php echo isset( $settings['height'] ) ? $settings['height'] : '350'; ?>" /> <?php _e( 'Height', 'wpcf' ); ?></label>
- <?php
- $form = ob_get_contents();
- ob_get_clean();
- return array(
- 'tabs' => array(
- 'display' => array(
- 'menu_title' => __( 'Display', 'wpcf' ),
- 'title' => __( 'Display', 'wpcf' ),
- 'content' => $form,
- )
- )
- );
- }
- /**
- * Processes editor popup submit
- */
- function wpcf_fields_google_map_editor_submit( $data, $field ) {
- $add = '';
- // Add parameters
- if ( !empty( $data['width'] ) ) {
- $add .= ' width="' . strval( $data['width'] ) . '"';
- }
- if ( !empty( $data['height'] ) ) {
- $add .= ' height="' . strval( $data['height'] ) . '"';
- }
- // Generate and return shortcode
- return wpcf_fields_get_shortcode( $field, $add );
- }
- /**
- * Renders view
- *
- * Useful $data:
- * $data['field_value'] - Value of custom field
- *
- * @param array $data
- */
- function wpcf_fields_google_map_view( $data ) {
- $data['width'] = !empty( $data['width'] ) ? $data['width'] : 425;
- $data['height'] = !empty( $data['height'] ) ? $data['height'] : 350;
- return '<iframe width="' . $data['width'] . '" height="' . $data['height']
- . '" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps?q='
- . $data['field_value']
- . '&num=1&vpsrc=0&hl=en&ie=UTF8&t=m&z=14&ll='
- . $data['field_value']
- . '&output=embed"></iframe><br /><small><a href="http://maps.google.com/maps?q='
- . $data['field_value']
- . '&num=1&vpsrc=0&hl=en&ie=UTF8&t=m&z=14&ll='
- . $data['field_value']
- . '&source=embed" style="color:#0000FF;text-align:left">'
- . __( 'View Larger Map', 'wpcf' )
- . '</a></small><br />';
- }
- function WPToolset_Field_Google_Map_loader()
- {
- if ( class_exists('WPToolset_Field_Google_Map' ) ) {
- return;
- }
- class WPToolset_Field_Google_Map extends FieldFactory
- {
- public function metaform()
- {
- $attributes = $this->getAttr();
- $metaform = array();
- $metaform[] = array(
- '#type' => 'textfield',
- '#title' => $this->getTitle(),
- '#description' => $this->getDescription(),
- '#name' => $this->getName(),
- '#value' => $this->getValue(),
- '#validate' => $this->getValidationData(),
- '#repetitive' => $this->isRepetitive(),
- '#attributes' => $attributes,
- );
- return $metaform;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement