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.
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.
Función en adb:
function creaSelect($tabla,$campo,$id="selRegistro"){ $filas=$this->seleccionar($tabla,0,-1); ?> <select id="<?=$id?>"> <option value="0">Seleccione...</option> <?php foreach($filas as $fila){ ?> <option value="<?=$fila["id$tabla"]?>"><?=$fila["$campo"]?></option> <?php } ?> </select> <?php }
Detalle:
require_once 'adb.php'; $adb=new adb(); $adb->creaSelect('test', 'nombre');
Detalle, script:
$(function() { $( "#selRegistro" ).change(function(){ console.log($(this).val()); $.get("ajax.php",{detalle:1,tabla:'test',id:$(this).val()}, function(data, status){ $("#resultado").html(data); }); }); });
ajax.php
if (isset($_GET['detalle']) && isset($_GET['id']) && isset($_GET['tabla'])){ $filas=$adb->seleccionarId($_GET['tabla'], $_GET['id']); echo json_encode($filas); }
Cambio en seleccionar:
$sql = "select * from $tabla " . (empty($cond) ? '' : " where $cond ") . (($numero!=-1)?" limit $inicio,$numero ":"");
Función en adb:
function seleccionarAuto($tabla, $campo, $term="",$inicio = 0, $numero = 10) { try { $sql = "select * from $tabla where $campo like '%$term%' limit $inicio,$numero "; $sqlst = $this->con->prepare($sql); $sqlst->execute(); $this->filas = $sqlst->fetchAll(PDO::FETCH_ASSOC); $res=array(); foreach ($this->filas as $fila){ $res[]=$fila[$campo]; } return $res; } catch (Exception $ex) { $this->tratarError("seleccionar", $ex->getMessage(), $sql); die($ex->getMessage()); } }
La página ajax.php:
require_once "adb.php"; $adb=new adb(); if (isset($_GET['buscar']) && isset($_GET['tabla']) && isset($_GET['campo'])){ $filas=$adb->seleccionarAuto($_GET['tabla'],$_GET['campo'],$_GET['term'],0,10); echo json_encode($filas); }
La llamada:
$(function() { $( "#buscar" ).autocomplete({ source: "ajax.php?buscar=1&tabla=test&campo=nombre", minLength: 2, }); });