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');
Plugin censura
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
}
?>
Añadir opciones a un plugin wordpress
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
}
?>
Tema simple para wordpress
Un tema muy sencillo para entender los mecanismos:
Mini framework version 3
La tercera versión, mantenimiento completo y ajax.
Ejercicio detalle
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 ":"");
Cambios en adb para introducir ajax
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,
});
});
Busqueda con get (ajax 2)
$nombres="ana,juan,eva,luis,rosa,jose,marc";
$nombres=explode(",",$nombres);
if (!empty($_GET['cadena'])) {
$res="";
foreach($nombres as $nombre){
if (strpos($nombre,$_GET['cadena'])!==false){
$res.=$nombre." ";
}
}
echo $res;
}
else{
echo "Faltan datos";
}
HTML:
$(document).ready(function(){
$("#nombre").keyup(function(){
var nom=$("#nombre").val();
$.get("busqueda.php",{cadena:nom}, function(data, status){
$("#resultado").html(data);
console.log("Datos: " + data + "\nStatus: " + status);
});
});
});
Ajax con jquery (1)
tabla.php
if (empty($_GET[‘numero’])) $num=1; else $num=$_GET[‘numero’];
for ($i=1;$i<=10;$i++){
echo «$i x $num=».($i*$num).»<br/>»;
}
test.html
$(document).ready(function(){ $.get(«tablas.php»,{numero:5}, function(data, status){ console.log(«Datos: » + data + «\nStatus: » + status); }); });
Nueva versión:
$(document).ready(function(){ $(«#ver»).click(function(){
var num=$(«#numero»).val();
$.get(«tablas.php»,{numero:num}, function(data, status){
$(«#resultado»).html(data);
console.log(«Datos: » + data + «\nStatus: » + status); }); }); });
Mini framework version 2
Segunda versión del miniframework, con funciones HTML incluídas: