simple-location/simple-location.php

106 lines
2.9 KiB
PHP

<?php
/*
Plugin Name: Simple Location
Plugin URI: http://www.danballard.com/
Description: Auto tags posts with city, country info
Version: 0.1
Author: Dan Ballard
Author URI: http://www.danballard.com
Minimum WordPress Version Required: 3.8
Tested up to: 3.8
*/
// register all handlers
if ( is_admin() ) {
add_action( 'admin_menu', 'add_options_menu' );
add_action( 'admin_init', 'reg_settings' );
add_action( 'admin_menu', 'add_meta_to_edit' );
add_action( 'edit_attachment', 'simple_location_post_save' );
add_action( 'save_post', 'simple_location_post_save' );
}
// resgister the SL options page in the WP settings menu
function add_options_menu() {
add_options_page('Simple Location Options', 'Simple Location', 'manage_options', 'simple-location', 'options_page');
}
// Display the SL admin options page
function options_page() {
include( plugin_dir_path(__FILE__) . 'options.php');
}
// Register the options page options that WP should store
function reg_settings() {
register_setting( 'simple-location-options', 'simple-location-api-key' );
}
// Register the SL meta edit box on WP pist edit pages
function add_meta_to_edit() {
add_meta_box('simple-location-meta', 'Simple Location', 'simple_location_meta', 'post', 'normal');
}
// display the post edit page SL meta edit box
function simple_location_meta() {
include( plugin_dir_path(__FILE__) . 'post-form.php');
}
// Hook for posts being saved.
// If he city or country field is blank, autopopulate from ipinfodb
function simple_location_post_save($post_id) {
if ($_POST['city'] == '' || $_POST['country'] == '') {
$key = get_option('simple-location-api-key');
if ($key != '') {
include('ip2locationlite.class.php');
$ipLite = new ip2location_lite;
$ipLite->setKey($key);
$locations = $ipLite->getCity($_SERVER['REMOTE_ADDR']);
}
}
if ($_POST['city'] == '') {
$_POST['city'] = ucfirst(strtolower($locations['cityName']));
}
update_post_meta($post_id, '_simple_location_city', sanitize_text_field($_POST['city']));
if ($_POST['country'] == '') {
$_POST['country'] = ucfirst(strtolower($locations['countryName']));
}
update_post_meta($post_id, '_simple_location_country', sanitize_text_field($_POST['country']));
}
function get_city() {
global $post;
return get_post_meta($post->ID, '_simple_location_city', true);
}
function get_country() {
global $post;
return get_post_meta($post->ID, '_simple_location_country', true);
}
// City shortcode
function shortcode_city( $attrs ) {
return get_city();
}
// Country shortcode
function shortcode_country( $attrs ) {
return get_country();
}
// non admin registering of shortcodes
add_shortcode( 'city', 'shortcode_city' );
add_shortcode( 'country', 'shortcode_country' );
// Tempalte function for city
function simple_location_city() {
echo get_city();
}
// Template function for country
function simple_location_country() {
echo get_country();
}