Skip to content

Instantly share code, notes, and snippets.

@andersanmiguel
Created September 9, 2014 11:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andersanmiguel/9f1ff3045dc5c12ac3a1 to your computer and use it in GitHub Desktop.
Save andersanmiguel/9f1ff3045dc5c12ac3a1 to your computer and use it in GitHub Desktop.
Basic example plugin, load json data into wordpress
<?php
/**
* Plugin Name: Cargar actividades de los proyectos
* Plugin URI: http://example.com
* Description: Plugin para cargar las activiades de los proyectos a través de un shortcode con la siguiente estructura. [actividades proyecto="nombreproyecto"]
* Version: 0.1
* Author: Ander San Miguel
* Author URI: http://lacuevaenruso.com
* License: GPL2
*/
function ljf_define_shortcode( $atts ) {
// Combino el array de valores por defecto con los que se pasan a través del shortcode
// la URL del ejemplo sería http://api.example.com/actividades/proyectos/nombreproyecto
$a = shortcode_atts( array(
'base_url' => 'http://api.example.com/actividades/proyectos/',
// El nombre por defecto lo dejo vacío, si no se pasara ningún valor en el shortcode devolvería las de todos los proyectos
'proyecto' => ''
), $atts );
// Recupero los valores de la API
$data = ljf_load_json_data($a['base_url'].$a['proyecto']);
// Recupero la plantilla ya cargada con los valores de la API
$html = ljf_get_html($data);
// Y devuelvo el HTML que sustituirá al shortcode en el post o página en el que se utilice
return $html;
}
function ljf_load_json_data( $url ) {
// Recupero el contenido de la URL (aquí podría utilizar curl u otra opción)
$json_data = file_get_contents($url);
// Y lo devuelvo como un array (al ser un entorno controlado, sé de buena tinta que siempre me va a devolver un array de objetos, así que no compruebo nada, es para uso interno)
return json_decode($json_data, true);
}
function ljf_get_html( $json_data ) {
// Inicializo la variable
$html_content = '';
// Comprobación básica para que no dé error el bucle
if (!empty($json_data) && is_array($json_data)) {
foreach ($json_data as $item) {
// La plantilla usa elementos muy básicos y neutros que, otra vez, es el compromiso de hacer algo para uso interno y en un entorno controlado
$html_content .= '<h2>'.$item['title'].'</h2>';
$html_content .= '<p>'.$item['description'].'</p>';
$html_content .= '<p><small><strong>Lugar:</strong> '.$item['place'].'<br />';
$html_content .= '<strong>Fecha:</strong> '.$item['date'].'<br />';
$html_content .= '<strong>Horario:</strong> '.$item['time'].'</small></p>';
$html_content .= '<hr />';
}
}
return $html_content;
}
add_shortcode( 'actividades', 'ljf_define_shortcode' );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment