Plugin destacar completo

<?php
/*
 Plugin Name: Destacado
 Plugin URI: http://intelisen.com/plugins
 Description: Destacar una lista de palabras clave
 Author: Juanpablito
 Version: 1
 Author URI: http://intelisen.com
 */

//$lista = "cocina,bravas,tapas,restaurante";

add_action('wp_head', 'estilos');

function estilos() {
 $color = destacar_get_color();
 ?>
 <style>
 .pg_destacado{
 font-weight: bold;
 background-color: <?= $color ?>;
 }
 </style>
 <?php
}

add_filter('the_content', 'destacar');
add_filter('the_excerpt', 'destacar');

function destacar($contenido) {
 $palabras = destacar_get_palabras();
 foreach ($palabras as $palabra) {
 $contenido = str_ireplace($palabra, "<span class=pg_destacado>" . $palabra . "</span>", $contenido);
 }
 return $contenido;
}

function destacar_get_palabras() {
 return explode(",", get_option("destacar_palabras"));
}

function destacar_get_color() {
 $color = get_option('destacar_color');
 $color = empty($color) ? 'yellow' : $color;
 return $color;
}

//Necesarios para crear un menú y registrar los campos
add_action('admin_menu', 'destacar_menu');
add_action('admin_init', 'destacar_settings');

//Registra el campo que vamos a guardar
function destacar_settings() {
 register_setting('destacar-group', 'destacar_palabras');
 register_setting('destacar-group', 'destacar_color');
}

//Son las opciones que tendrá nuestro menú. Los parámetros son: título de la página, título del menú, quien puede acceder, url de esta página y función a la que se llama
function destacar_menu() {
 add_options_page('Opciones destacar', 'Destacar', 'manage_options', 'destacar-identifier', 'destacar_options');
}

//Formulario que se mostrará cuando se seleccione el menú
function destacar_options() {
 if (!current_user_can('manage_options')) {
 wp_die('No tiene permiso.');
 }
 ?>

 <div>
 <?php screen_icon(); ?>
 <h2>Opciones destacar</h2>

 <form method="post" action="options.php">
 <?php
 settings_fields('destacar-group');
 do_settings_fields('destacar-group', '');
 $color = destacar_get_color();
 ?>

 <p>Introduzca las palabras a destacar separadas por comas</p>
 <input size="70" type="text" name="destacar_palabras" value="<?php echo get_option('destacar_palabras'); ?>" />
 <p>Elija el color destacado</p>
 <input type="radio" name="destacar_color" value="yellow" <?= $color == 'yellow' ? 'checked' : '' ?>>Amarillo
 <input type="radio" name="destacar_color" value="lightgreen"<?= $color == 'lightgreen' ? 'checked' : '' ?>>Verde
 <?php
 submit_button();
 ?>
 </form>
 </div>
 <?php
}

Crear un plugin para wordpress (4): Opciones en menú

En los plugins podemos dar al usuario de wordpress la capacidad de poner opciones, que luego podemos usar en nuestro código. Basta poner una opción de menú y un formulario, wordpress se encarga del resto. Un ejemplo:

<?php
/*
 Plugin Name: Destacados
 Plugin URI: https://es.wikiquote.org/wiki/Portada
 Description: Destaca palabras 
 Author: Jota Peich
 Version: 1.0
 Author URI: http://intelisen.com
 */

//Las dos funciones siguientes y el add_filter son el código del plugin
function destacar_get_palabras() {
 return explode(",", get_option("destacar_palabras"));
}

function destacar_filtro($contenido) {
 $palabras = destacar_get_palabras();
 foreach ($palabras as $palabra) {
 $palabra=trim($palabra);
 $contenido = str_ireplace($palabra, "<span class=pg_destacado>" . $palabra . "</span>", $contenido);
 }
 return $contenido;
}

add_filter('the_content', 'destacar_filtro');


//Necesarios para crear un menú y registrar los campos
add_action('admin_menu', 'destacar_menu');
add_action('admin_init', 'destacar_settings');

//Registra el campo que vamos a guardar
function destacar_settings() {
 register_setting('destacar-group', 'destacar_palabras');
}


//Son las opciones que tendrá nuestro menú. Los parámetros son: título de la página, título del menú, quien puede acceder, url de esta página y función a la que se llama
function destacar_menu() {
 add_options_page('Opciones destacar', 'destacar', 'manage_options', 'destacar-identifier', 'destacar_options');
}

//Formulario que se mostrará cuando se seleccione el menú
function destacar_options() {
 if (!current_user_can('manage_options')) {
 wp_die('No tiene permiso.');
 }
 ?>

 <div>
 <?php screen_icon(); ?>
 <h2>Opciones destacar</h2>

 <form method="post" action="options.php">
 <?php
 settings_fields('destacar-group');
 do_settings_fields('destacar-group', '');
 ?>

 <p>Introduzca las palabras a destacar separadas por comas</p>
 <input size="70" type="text" name="destacar_palabras" value="<?php echo get_option('destacar_palabras'); ?>" />

 <?php
 submit_button();
 ?>
 </form>
 </div>
 <?php
}
?>

Crear un widget para wordpress

En este caso la cosa se complica, tenemos que tener un esqueleto que herede la clase widget. Pero básicamente es lo mismo, el código va donde el comentario:

<?php
/*
Plugin Name: Entrada aleatoria
Plugin URI: http://intelisen.com
Description: Muestra una entrada aleatoria
Author: Intelisen
Version: 1
Author URI: http://intelisen.com
*/


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;;
 
 // CóDIGO DEL WIDGET
$posts = get_posts('orderby=rand&numberposts=1');
$post=$posts[0];

?><a href="<?=get_permalink ($post); ?>" title="<?=$post->post_title; ?>"><?=$post->post_title; ?></a>
<?php
 echo $after_widget;
 }
 
}

add_action( 'widgets_init', create_function('', 'return register_widget("EntradasWidget");') );?>

Crear un plugin para WordPress (3): Shortcode

El ‘Shortcode’ es asociar un texto entre corchetes con una función de php (normalmente implica imprimir algo de HTML). Por ejemplo:

function google_shortcode(){
 return '<input type="button" value="Ir a google" />';
}


add_shortcode('google_atajo', 'google_shortcode');

El ejemplo anterior nos crea un ‘atajo’ que crea un botón que, sencillamente, nos dirige a google. Un ejemplo algo más sofisticado sería el siguiente, que crea un botón que nos envía al validador de webs de w3c:

function validator_get_url(){
 return get_permalink();
}

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_shortcode('validator', 'validator_shortcode');

Crear un plugin para wordpress (2)

Para añadir nuestro código a wordpress tenemos dos opciones:

add_filter(‘gancho’,’funcion’)

Cuando se muestre el contenido del ‘gancho’ se llamará a nuestra función ‘función’. Lo que devuelva nuestra función será el valor del gancho, con lo que tenemos que asegurarnos de que devolvemos un valor. Veamos dos ejemplos:

add_filter( 'the_content', 'cambiar_contenido' );

function cambiar_contenido($contenido){
return $contenido." ¡Mega artículo!";
}

El código anterior cambiaría el contenido de las entradas añadiendo el texto ‘¡Mega artículo al final!’.

add_filter( 'the_title', 'cambia_titulo' );

function cambia_titulo($contenido){
return "###==>".$contenido;
}

El código anterior cambiaría los títulos añadiendo el texto ‘###==>’ al principio.

add_filter('the_content', 'cambiar_contenido');

function cambiar_contenido($contenido) {
    if (strlen($contenido)<300){
        return $contenido;
    }
    else{
        $palabras=explode(" ",$contenido);
        $inicio=implode(" ",array_slice($palabras,0,40));
        $fin=implode(" ",array_slice($palabras,40));
        return $inicio.
                '
'
                . '";
    }
}

El código anterior, si el texto es largo, añade un botón de ‘Ver más’.

add_action(‘gancho’, ‘función’)

Cuando se ejecute la acción de wordpress ‘gancho’ se llamará a nuestra acción -que puede o no mostrar un contenido. Veamos ejemplos:

add_action( 'admin_notices', 'saludo' );

function saludo(){
echo "ola k ase???";
}

El código anterior hace que cuando se muestren las noticias de administración, se escriba el mensaje ‘ola k ase?’.

add_action( 'wp_head', 'ponjquery' );

function ponjquery(){
echo '<El código que pongamos aquí se pintará en la cabecera (head) del wordpress>'; }

El código anterior nos pone jquery en la cabecera.

Crear un plugin para wordpress (1)

Debemos crear una carpeta dentro de wp-content\plugins, y dentro un arhivo index.php con lo siguiente:

/*
Plugin Name: Nombre del plugin
Plugin URI: http://intelisen.com/plugins
Description: Descripción del plugin
Author: Intelisen
Version: 1
Author URI: http://intelisen.com
*/

Temas hijos en wordpress

Para crear un tema hijo sólo tenemos que crear una carpeta y dentro un archivo style.css con lo siguiente:

/*
 Theme Name:   Twenty Fourteen Child
 Theme URI:    http://example.com/twenty-fourteen-child/
 Description:  Twenty Fourteen Child Theme
 Author:       John Doe
 Author URI:   http://example.com
 Template:     twentyfourteen
 Version:      1.0.0
 Tags:         light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready
 Text Domain:  twenty-fourteen-child
*/
@import url("../twentyfourteen/style.css");

Ojo al apartado Template y al import del url.

Tutorial:

Temas hijos

https://ayudawp.com/como-crear-un-tema-hijo-en-wordpress/

https://www.webempresa.com/blog/crear-temas-hijo-child-themes-en-wordpress.html