Created
May 2, 2021 17:18
-
-
Save carmoreira/1e23c1100828a3ea7ffc2cb7047c118a to your computer and use it in GitHub Desktop.
Interactive Geo Maps - Custom Addon to populate map from Custom Post Type
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Interactive Geo Maps Callback | |
* | |
* @wordpress-plugin | |
* Plugin Name: Interactive Geo Maps CPT Addon | |
* Plugin URI: https://interactivegeomaps.com | |
* Description: Connects CPT with map | |
* Version: 1.0.0 | |
* Author: Carlos Moreira | |
* Author URI: https://cmoreira.net/ | |
* License: GPL-2.0+ | |
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt | |
*/ | |
add_filter( 'igm_add_meta', 'igm_cpt_addon', 1 ); | |
/** | |
* Filter map output | |
* @param array $meta - meta data from the map | |
* @return array modified meta | |
*/ | |
function igm_cpt_addon( $meta ){ | |
// if you want to target a specific map, use this code with your map ID | |
/* | |
if ( intval( $meta['id'] ) !== 999 ) { | |
return $meta; | |
} */ | |
// you can modify/populate the different types of data. In this example we'll modify 'regions' | |
// but you could modify 'roundMarkers', 'iconMarkers', 'vectorIcons' and 'labels'. | |
$post_type = 'tshowcase'; // modify here to set your own custom post type | |
// we will query the custom post types and loop through them | |
$args = array( | |
'posts_per_page' => -1, | |
'post_status' => 'publish', | |
'post_type' => $post_type, | |
); | |
$posts = get_posts( $args ); | |
$regions = []; | |
// loop posts. | |
foreach ( $posts as $post ) { | |
// in this example we'll get the region code from a custom meta field | |
// if you're using ACF you can use the function get_field instead | |
$entry = array( | |
'id' => get_post_meta( $post->ID, '_tslocation', true ), // this should be the region name or code according to selected map | |
'title' => $post->post_title, | |
'tooltipContent' => $post->post_title, | |
'content' => $post->post_content, | |
'useDefaults' => '1', // set this to 1, to allow the regions to inherit colors from default settings. If you want to control the colours populate the 'fill' and 'hover' parameters | |
'customField' => get_post_meta( $post->ID, '_mycustommeta', true ), | |
//action => 'open_url', | |
//latitude => 0, | |
//longitude => 0, | |
); | |
// you can populate the entry with whatever custom fields you need. You can then use {customField01} in the tooltip template, to display information from those fields | |
array_push( $regions, $entry ); | |
} | |
$meta['regions'] = $regions; | |
return $meta; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment