Created
September 9, 2014 11:22
-
-
Save andersanmiguel/9f1ff3045dc5c12ac3a1 to your computer and use it in GitHub Desktop.
Basic example plugin, load json data into wordpress
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 | |
/** | |
* 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