$default_url, ), $atts)); $metadata = ff_meta_getmetadata ($url); $state = $metadata['state']; // Output $outstr = sprintf('%s', $state['nodes']); return $outstr; } if ( ! shortcode_exists( 'ff_services' ) ) { add_shortcode( 'ff_services', 'ff_meta_shortcode_services'); } // Example: // [ff_services] // [ff_services url="http://meta.hamburg.freifunk.net/ffhh.json"] function ff_meta_shortcode_services( $atts ) { $default_url = get_option( 'ff_meta_url' ); extract(shortcode_atts( array( 'url' => $default_url, ), $atts)); $metadata = ff_meta_getmetadata ($url); $services = $metadata['services']; // Output $outstr = '
'; return $outstr; } if ( ! shortcode_exists( 'ff_contact' ) ) { add_shortcode( 'ff_contact', 'ff_meta_shortcode_contact'); } // Example: // [ff_contact] // [ff_contact url="http://meta.hamburg.freifunk.net/ffhh.json"] function ff_meta_shortcode_contact( $atts ) { $default_url = get_option( 'ff_meta_url' ); extract(shortcode_atts( array( 'url' => $default_url, ), $atts)); $metadata = ff_meta_getmetadata ($url); $contact = $metadata['contact']; // Output -- rather ugly but the data is not uniform, some fields are URIs, some are usernames, ... $outstr = '

'; if (!empty($contact['email'])) { $outstr .= sprintf("E-Mail: %s
\n", $contact['email'], $contact['email']); } if (!empty($contact['ml'])) { $outstr .= sprintf("Mailingliste: %s
\n", $contact['ml'], $contact['ml']); } if (!empty($contact['irc'])) { $outstr .= sprintf("IRC: %s
\n", $contact['irc'], $contact['irc']); } if (!empty($contact['twitter'])) { // catch username instead of URI if ($contact['twitter'][0] === "@") { $twitter_url = 'http://twitter.com/'.ltrim($contact['twitter'], "@"); $twitter_handle = $contact['twitter']; } else { $twitter_url = $contact['twitter']; $twitter_handle = '@' . substr($contact['twitter'], strrpos($contact['twitter'], '/') + 1); } $outstr .= sprintf("Twitter: %s
\n", $twitter_url, $twitter_handle); } if (!empty($contact['facebook'])) { $outstr .= sprintf("Facebook: %s
\n", $contact['facebook'], $contact['facebook']); } if (!empty($contact['googleplus'])) { $outstr .= sprintf("G+: %s
\n", $contact['googleplus'], $contact['googleplus']); } if (!empty($contact['jabber'])) { $outstr .= sprintf("XMPP: %s
\n", $contact['jabber'], $contact['jabber']); } # maybe we do not want public phone numbers... #if (!empty($contact['phone'])) { # $outstr .= sprintf("Telephon: %s
\n", $contact['phone']); #} $outstr .= '

'; return $outstr; } // Options Page: add_action( 'admin_menu', 'ff_meta_admin_menu' ); function ff_meta_admin_menu() { add_options_page( 'FF Meta Plugin', // page title 'FF Meta', // menu title 'manage_options', // req'd capability 'ff_meta_plugin', // menu slug 'ff_meta_options_page' // callback function ); } add_action( 'admin_init', 'ff_meta_admin_init' ); function ff_meta_admin_init() { register_setting( 'ff_meta_settings-group', // group name 'ff_meta_url' // option name ); add_settings_section( 'ff_meta_section-one', // ID 'Section One', // Title 'ff_meta_section_one_callback', // callback to fill 'ff_meta_plugin' // page to display on ); add_settings_field( 'ff_meta_url', // ID 'URL of meta.json', // Title 'ff_meta_url_callback', // callback to fill field 'ff_meta_plugin', // menu page=slug to display field on 'ff_meta_section-one' // section to display the field in ); } function ff_meta_section_one_callback() { echo 'This Plugin provides shortcodes to display information from the Freifunk meta.json.'; } function ff_meta_url_callback() { $url = get_option( 'ff_meta_url' ); echo ""; } function ff_meta_options_page() { ?>

Freifunk Meta Plugin Options