Copias de seguridad en WordPress

UNa buena manera de realizar copias de seguridad en WP es utilizar el siguiente plugin:

updraftplus

Que nos permite realizar varias configuraciones. En la primera pantalla vemos el estado general del sistema:

En la segunda podemos ver los respaldos realizados y, en caso de necesitarlo, restaurar la copia:

En la tercera pantalla podemos configurar la frecuencia de la copia de seguridad, tanto de la base de datos, como de los archivos:

Y especificar dónde queremos guardar esa copia. Tenemos un amplio abanico, desde mandarla por correo electrónico hasta guardarla en dropbox.

También cuenta ftp:

Podemos especificar qué archivos queremos copiar y si queremos un reporte:

Plugin wordpress con todo



<?php
/*
Plugin Name: Plugin propio
Plugin URI: http://intelisen.com/plugins
Description: Un plugin para probar cosas
Author: Intelisen
Version: 1
Author URI: http://intelisen.com
*/

add_filter('the_content', 'cambiar_contenido');

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

add_filter('the_title', 'cambia_titulo');

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

add_action('admin_notices', 'saludo');

function saludo() {
echo "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>'
. '<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>';
}

function google_shortcode() {
return '<input onclick="location.href=\'http://google.es\'" type="button" value="Ir a google" />';
}

add_shortcode('google_atajo', 'google_shortcode');

function refran() {
$refranes = ["No por mucho madrugar amanece más temprano", "A quien madruga dios le ayuda", "Más vale pájaro en mano que ciento volando"];
return "<p>" . $refranes[rand(0, count($refranes) - 1)] . "</p>";
}

add_shortcode('refran', 'refran');

function imagenes() {
$query_images_args = array(
'post_type' => 'attachment',
'post_mime_type' => 'image',
'post_status' => 'inherit',
'posts_per_page' => - 1,
);

$query_images = new WP_Query($query_images_args);
$imagen = $query_images->posts[rand(0, count($query_images->posts) - 1)];

return '<img width=300 height=300 src="' . $imagen->guid . '"/>';
}

add_shortcode('imagenes', 'imagenes');

//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', '');
?>

<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>Introduzca el color que quiere usar para destacar</p>
<input size="70" type="text" name="destacar_color" value="<?php echo get_option('destacar_color'); ?>" />

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

//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 style='background-color:" . get_option("destacar_color") . "'>" . $palabra . "</span>", $contenido);
}
return $contenido;
}

add_filter('the_content', 'destacar_filtro');

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");'));

Ejemplos shortcodes

Pone un refrán aleatorio:

function refran() {
    $refranes = ["No por mucho madrugar amanece más temprano", "A quien madruga dios le ayuda", "Más vale pájaro en mano que ciento volando"];
    return "<p>" . $refranes[rand(0, count($refranes) - 1)] . "</p>";
}

add_shortcode('refran', 'refran');

Pone una imagen aleatoria de la biblioteca de medios:

function imagenes() {
    $query_images_args = array(
        'post_type' => 'attachment',
        'post_mime_type' => 'image',
        'post_status' => 'inherit',
        'posts_per_page' => - 1,
    );

    $query_images = new WP_Query($query_images_args);
    $imagen = $query_images->posts[rand(0, count($query_images->posts) - 1)];

    return '<img width=300 height=300 src="' . $imagen->guid . '"/>';
}

add_shortcode('imagenes', 'imagenes');

Publicar WordPress en un servidor desde local

Para publicar WP en un servidor necesitamos hacer varias cosas:

– Subir los archivos
– Subir la base de datos
– Configurar el WP

Para subir los archivos necesitamos una cuenta ftp. En el caso de always data se crea así:

Con esta cuenta nos iremos a cualquier programa cliente de ftp, por ejemplo filezilla, y configuramos la cuenta ftp:

Una vez hecho esto y conectados a la cuenta sólo tenemos que arrastrar los archivos a la carpeta www del servidor.

Para subir la base de datos tenemos que crear una base de datos en el servidor, y después exportar en local e importar en remoto:

Creamos la base de datos:

Creamos el usuario:

En localhost/phpmyadmin (http://localhost/phpmyadmin/) exportamos la base de datos:

En phpmyadmin de alwaysdata (https://phpmyadmin.alwaysdata.com/), entrando con nuestro usuario, le damos a importar

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
}