-
Notifications
You must be signed in to change notification settings - Fork 11
/
acf-leaflet_field.php
123 lines (103 loc) · 3.34 KB
/
acf-leaflet_field.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<?php
/*
Plugin Name: Advanced Custom Fields: Leaflet Field
Plugin URI: https://github.com/jensjns/acf-leaflet-field
Description: Adds a Leaflet map-field to Advanced Custom Fields.
Version: 1.2.1
Author: Jens Nilsson
Author URI: http://jensnilsson.nu/
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
*/
class acf_field_leaflet_field_plugin
{
/*
* Construct
*
* @description:
* @since: 3.6
* @created: 1/04/13
*/
function __construct()
{
// set text domain
$domain = 'acf-leaflet_field';
$mofile = trailingslashit(dirname(__File__)) . 'lang/' . $domain . '-' . get_locale() . '.mo';
load_textdomain( $domain, $mofile );
// version 5 (PRO)
add_action('acf/include_field_types', array($this, 'register_fields_v5'));
// version 4+
add_action('acf/register_fields', array($this, 'register_fields_v4'));
// version 3-
if(function_exists('register_field'))
{
add_action( 'init', array( $this, 'init' ));
}
}
/*
* Init
*
* @description:
* @since: 3.6
* @created: 1/04/13
*/
function init()
{
register_field('acf_field_leaflet_field', dirname(__File__) . '/leaflet_field-v3.php');
}
/*
* register_fields
*
* @description:
* @since: 3.6
* @created: 1/04/13
*/
function register_fields_v4()
{
include_once('leaflet_field-v4.php');
}
function register_fields_v5()
{
include_once('leaflet_field-v5.php');
}
}
new acf_field_leaflet_field_plugin();
/**
* the_leaflet_field()
*
* Renders leaflet field
*
* @param $field_name - Required, The name of the field
* @param $post_id - Optional, the id of the post (will try to render for the current page if no id is specified)
*
* @since 0.1.0
* @date 10/04/13
*/
function the_leaflet_field( $field_name, $post_id = false ) {
if( !$post_id ) {
global $post;
$post_id = $post->ID;
}
$field_obj = get_field_object(
$field_name,
$post_id,
array(
'load_value' => true
)
);
$field_obj['map_provider'] = acf_field_leaflet_field::$map_providers[$field_obj['map_provider']];
if( $field_obj['map_provider']['requires_key'] ) {
$field_obj['map_provider']['url'] = str_replace( '{api_key}', $field_obj['api_key'], $field_obj['map_provider']['url'] );
}
if( $field_obj['value'] ) {
// enqueue styles
wp_enqueue_style( 'leaflet', plugins_url( '/js/leaflet/leaflet.css', __FILE__ ), array(), '0.7.3', 'all' );
// enqueue scripts
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'leaflet', plugins_url( '/js/leaflet/leaflet.js', __FILE__ ), array(), '0.7.3', true );
wp_enqueue_script( 'leaflet-frontend', plugins_url( '/js/leaflet-frontend.js', __FILE__ ), array( 'jquery', 'leaflet' ), '1.2.1', true );
wp_localize_script( 'leaflet-frontend', 'leaflet_field', $field_obj );
echo '<div id="' . $field_obj['id'] . '_map" class="leaflet-map" style="height:' . $field_obj['height'] . 'px;"></div>';
}
}
?>