Tendremos tres tipos de contenido:
Salas
-Nombre
-Descripción
-Logo
– Aforo
Grupos
– Nombre
– Descripción
– Fotos
– Vídeos
– Mp3 para descargar
– Estilo (Taxonomy)
Conciertos
– Nombre
– Fecha
– Precio
– Sala
– Grupo
Tendremos tres tipos de contenido:
Salas
-Nombre
-Descripción
-Logo
– Aforo
Grupos
– Nombre
– Descripción
– Fotos
– Vídeos
– Mp3 para descargar
– Estilo (Taxonomy)
Conciertos
– Nombre
– Fecha
– Precio
– Sala
– Grupo
Ejercicio sencillo:
Obtener un listado de la base de datos agrupado por Código postal. Ejemplo:
08001
Juan Pi Agla, 6
Eva H Agla 6
08002
Luis
Rosa
….
Ejercicio más complicado:
Añadir al mantenimiento de la entrada anterior una pantalla de login/password. Crearemos una tabla ‘acceso’ con los campos user/password. El password lo guardaremos en md5. Si el usuario no está logueado no podrá acceder a ninguna pantalla.
Este ejercicio es parecido al hecho en clase, pero tiene muchos errores.
¿Eres capaz de corregirlos?
P.D. Se incluye la base de datos a la que ataca el código.
El siguiente código nos muestra dos imágenes aleatorias del media library:
$media_query = new WP_Query(
array(
'post_type' => 'attachment',
'post_status' => 'inherit',
'posts_per_page' => 2,
'orderby'=>'rand'
)
);
foreach ($media_query->posts as $post) {
echo wp_get_attachment_image($post->ID,'thumbnail');
}
<?php
/*
Plugin Name: Entrada aleatoria
Plugin URI: http://jamesbruce.me/
Description: Muestra una entrada aleatoria
Author: James Bruce
Version: 1
Author URI: http://jamesbruce.me/
*/
class EntradasWidget extends WP_Widget
{
function EntradasWidget()
{
$widget_ops = array('classname' => 'EntradasWidget', 'description' => 'Muestra entrada aleatoria' );
$this->WP_Widget('EntradasWidget', 'Entrada aleatoria con thumbnail', $widget_ops);
}
function form($instance)
{
$instance = wp_parse_args( (array) $instance, array( 'title' => '' ) );
$title = $instance['title'];
?>
<p><label for="<?php echo $this->get_field_id('title'); ?>"><?=_e('Title')?>: <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo attribute_escape($title); ?>" /></label></p>
<?php
}
function update($new_instance, $old_instance)
{
$instance = $old_instance;
$instance['title'] = $new_instance['title'];
return $instance;
}
function widget($args, $instance)
{
extract($args, EXTR_SKIP);
echo $before_widget;
$title = empty($instance['title']) ? ' ' : apply_filters('widget_title', $instance['title']);
if (!empty($title))
echo $before_title . $title . $after_title;;
// WIDGET CODE GOES HERE
echo "<h1>Ola k ase?</h1>";
echo $after_widget;
}
}
add_action( 'widgets_init', create_function('', 'return register_widget("EntradasWidget");') );?>
function validator_get_url(){
return get_permalink();
}
function validator_boton($contenido) {
return $contenido.'<input type="button" value="Valida la página" onclick="location.href=\'http://validator.w3.org/check?uri='.urlencode(validator_get_url()).'\'"/>';
}
function validator_shortcode(){
return '<input type="button" value="Valida la página" onclick="location.href=\'http://validator.w3.org/check?uri='.urlencode(validator_get_url()).'\'"/>';
}
add_filter( 'the_content', 'validator_boton' );
add_shortcode('validator', 'validator_shortcode');
Código del plugin
<?php
/*
Plugin Name: Censura
Plugin URI: https://es.wikiquote.org/wiki/Portada
Description: Censura palabras que pueden ofender
Author: Jota Peich
Version: 1.0
Author URI: http://intelisen.com
*/
function censura_get_palabras(){
return explode( ",", get_option("censura_palabras"));
}
function censura_filtro($contenido) {
$palabras = censura_get_palabras();
foreach($palabras as $palabra){
$contenido= str_replace($palabra, '<span class="censura">'.str_repeat("*",strlen($palabra)).'</span>' , $contenido);
}
return $contenido;
}
add_filter( 'the_content', 'censura_filtro' );
add_action( 'wp_enqueue_scripts', 'censura_pon_css' );
/**
* Enqueue plugin style-file
*/
function censura_pon_css() {
// Respects SSL, Style.css is relative to the current file
wp_register_style( 'prefix-style', plugins_url('style.css', __FILE__) );
wp_enqueue_style( 'prefix-style' );
}
add_action( 'admin_menu', 'censura_menu' );
add_action( 'admin_init', 'censura_settings');
function censura_settings() {
register_setting( 'censura-group', 'censura_palabras' );
};
function censura_menu() {
add_options_page( 'Opciones censura', 'Censura', 'manage_options', 'censura-identifier', 'censura_options' );
}
function censura_options() {
if ( !current_user_can( 'manage_options' ) ) {
wp_die( 'No tiene permiso.' );
}
?>
<div>
<?php screen_icon(); ?>
<h2>Opciones censura</h2>
<form method="post" action="options.php">
<?php
settings_fields( 'censura-group' );
do_settings_fields( 'censura-group', '' );
?>
<p>Introduzca las palabras a censurar</p>
<input size="70" type="text" name="censura_palabras" value="<?php echo get_option('censura_palabras'); ?>" />
<?php
submit_button();
?>
</form>
</div>
<?php
}
?>
Un ejemplo:
add_action( 'admin_menu', 'frasedeldia_menu' );
add_action( 'admin_init', 'frasedeldia_settings');
function frasedeldia_settings() {
register_setting( 'frasedeldia-group', 'frasedeldia_text' );
};
function frasedeldia_menu() {
add_options_page( 'Opciones frase del dia', 'Frase del día', 'manage_options', 'frasedeldia-identifier', 'frasedeldia_options' );
}
function frasedeldia_options() {
if ( !current_user_can( 'manage_options' ) ) {
wp_die( 'You do not have sufficient permissions to access this page.' );
}
?>
<div>
<?php screen_icon(); ?>
<h2>Opciones frase del día</h2>
<form method="post" action="options.php">
<?php
settings_fields( 'frasedeldia-group' );
do_settings_fields( 'frasedeldia-group', '' );
?>
<p>Introduzca frase</p>
<input type="text" name="frasedeldia_text" value="<?php echo get_option('frasedeldia_text'); ?>" />
<?php
submit_button();
?>
</form>
</div>
<?php
}
?>
Un tema muy sencillo para entender los mecanismos:
La tercera versión, mantenimiento completo y ajax.