blog

Crear archivos .POT para las traducciones de tu theme o plugin en wordpress con poedit

En este post mostramos cómo puede crear un archivo .pot para su tema con Poedit

La mejor práctica es guardar archivos de idioma en una carpeta llamada "idiomas" en su directorio de temas. Si aún no lo ha hecho, créelo antes de comenzar.

En Poedit:

    En el menú "Archivo", seleccione "Nuevo"
    Seleccione el idioma que utilizó en su tema (probablemente inglés)
    En el menú "Catálogo", seleccione "Propiedades"
    Ingrese la información del proyecto en la pestaña "Propiedades de traducción"
    Vaya a la tercera pestaña "Palabras clave de fuentes"
    Haga clic en el botón "Nuevo elemento" (segundo botón) e ingrese una palabra clave y repita esto para cada una de sus palabras clave (__, _e, esc_attr_e, etc.)
    Haga clic en el botón "Aceptar" en la parte inferior
    En el menú "Archivo", seleccione "Guardar como ..."
    Guarde el archivo como "yourthemename.pot" en la carpeta "languages" en su directorio de temas (asegúrese de agregar la extensión .pot al nombre del archivo porque de manera predeterminada se guardará como .po)
    En el menú "Catálogo", seleccione "Propiedades" nuevamente
    Vaya a la segunda pestaña "Rutas de origen"
    Establezca el valor de "Ruta de base" en ../ (el archivo .pot se guarda en un subdirectorio, de esta forma configura la base en el directorio principal, es decir, el directorio de su tema)
    Junto a "Ruta", haga clic en el botón "Nuevo elemento" e ingrese. (esto hará que escanee su directorio de temas y sus subdirectorios)
    Haga clic en el botón "Aceptar" en la parte inferior
    En la ventana del proyecto, haga clic en "Actualizar" (segundo icono en la parte superior)
    En el menú "Archivo", haga clic en "Guardar"

Y tu estas listo :) ahora tienes un archivo de plantilla para las traducciones de tu theme o plugin

__() = Return the translated string
_e() = echo the translated string
esc_html__() = Escapes & return the translation string use in HTML output
esc_html_e() = Escapes & echo the translation string use in HTML output
esc_attr__() = Escapes & return the translation string use in an attribute
esc_attr_e() = Escapes & echo the translation string use in an attribute

_n() = Retrieve the plural or single form based on the amount.

_x() = Retrieve translated string with gettext context
_ex() = echo translated string with gettext context
esc_attr_x() = Escapes & return translated string with gettext context use in an attribute
esc_html_x() = Escapes & return translated string with gettext context use in HTML output

Validar checkbox y radiobutton con jQuery

Validar checkbox

Para validar los checkboxes partiremos del siguiente código.

<input type="checkbox" name="colors" id="red">
<label for="red">Rojo</label>

<input type="checkbox" name="colors" id="green">
<label for="green">Verde</label>

<input type="checkbox" name="colors" id="blue">
<label for="blue">Azul</label>

Como pueden apreciar se trata de un conjunto de checkboxes que poseen el nombre colors y a diferencia de otros tipos de campos, aquí no podemos validar utilizando el ID del campo debido a que cada check posee uno diferente. Por lo tanto utilizaremos el siguiente script.

$('#validate').click(function() {

    if ($('input[name="colors"]').is(':checked')) {
        alert('Campo correcto');

    } else {
        alert('Debe seleccionar al menos un color');
    }
});

Validar radiobutton

El proceso para validar radiobuttons es el mismo usado para validar checkbox. Vamos a utilizar el siguiente código.

<input type="radio" name="languages" id="spanish">
<label for="spanish">Español</label>

<input type="radio" name="languages" id="english">
<label for="english">Inglés</label>

<input type="radio" name="languages" id="italian">
<label for="italian">Italiano</label>

Al igual que con los checks todos los radios deben tener el mismo nombre y poseer ID’s diferentes por lo cual no podemos validar usando ese atributo sino el atributo name.

El código necesario para validar los radiobuttons es el siguiente.

$('#validate').click(function() {

    if ($('input[name="languages"]').is(':checked')) {
        alert('Campo correcto');

    } else {
        alert('Se debe seleccionar un idioma');
    }
});

Las mejores tipografías para tu diseño gráfico

Las 10 mejores tipografías para tus diseños

Ahí está, ¡ya tienes la idea para tu diseño! La imagen central, el eslogan y los contenidos que quieres que aparezcan. Es hora de ponerse manos a la obra. Te sientas frente a la pantalla e introduces todos los elementos pero, viene el punto crucial: ¿qué tipografía vas a utilizar?

En todo diseño el momento en el que se decide la tipografía es fundamental ya que puede ayudarte a potenciar tu diseño y convertirlo en un reclamo increíble o parecer uno más del montón. La tipografía es tan importante como la imagen e incluso, a veces, convierte una imagen sencilla en un comunicado con fuerza, puesta que es capaz de transmitir: moda, seguridad, profesionalidad y humanidad.

Los diseñadores tendemos, en éste momento decisivo, a seleccionar tipografías de nuestro ordenador con las que solemos trabajar y nos gustan personalmente, pero ahí podemos acabar haciendo diseños clonados a anteriores, y poco originales. Otra tendencia es intentar buscar la ideal descargando 50 tipografías diferentes (de pago y gratuitas) que consigan ese propósito, llegando a estar horas buscando y haciendo pruebas con todas. Te ayudamos a encontrar rápidamente lo que necesitas, con una selección propia de las 10 mejores tipografías para tu diseño gráfico.

Las mejores tipografías para tu diseño gráfico

  1. Hagin –  Con serifa, creada con formas geométricas firmes que recuerda a años universitarios pasados, diseñado por Miroslav Bekyarov para Fontfabric.
  2. Idaho – Sigue un estilo retro con remates suavizados, con un acabado elegante, ideal para titulares con impacto y cinematógrafos,  diseñado por Conrad Garner.
  3. Lavanderia – Tipografía retro que te transporta a un diseño de detalle y amable, creada por James T. Edmondson.
  4. Nexa – Sin serifa, con versiones de grosor, aporta seriedad y actualidad a cualquier diseño.
  5. Reis – De mano azada, estas pinceladas rotundas aportan humanidad, rigor y fuerza a tus diseños. creada por Marcelo Reis.
  6. Sun – Ideal para titulares y slogans, esta tipografía de mano alzada o Handwriting ha sido creada por RITCreative – Gatis Vilaks y Krišjānis Mežulis.
  7. Arvo – Retro de serifa romana, equilibriada, aporta suavidad con rotundez en sus acabados. Creada por Anton Koovit.
  8. Anders – Sin serifa que recuerda a los años 30, es un experimento muy elegante de Tom Anders Watkins
  9. Dense – Tipografía sin serifa, geométrica y alta transmite confianza, actual y seria. Creada por Charles Daoud
  10. Too Tight – Divertida Handwriting, que aporta frescura y juventud a diseños que buscan proximidad. Creada por Vanessa Bays

Criterios básicos para la utilización de tipografías 

¡Pero cuidado!, esta selección es buena si utilizas las tipografías con unos criterios básicos, que te ayudarán a la buena utilización de éstas, y por lo tanto, a ganar impacto y buena lectura en tus diseños.

Familia tipográfica

En tus diseños utiliza diferentes versiones de la familia tipográfica (regular, negrita, cursivas, versiones think), para crear diferentes niveles de importancia y jerarquía visual, manteniendo el estilo.

Combina la tipografía sin serifa con serifa

Utilización de diferentes tipografías en un mismo diseño, como máximo 2 o 3,  garantiza que los mensajes con tipografía con serifa llamen más la atención, si el resto está sin serifa, garantizando un resultado elegante y personal. La combinación de tipografías que simulan mano alzada y sin serifa también tienen un éxito garantizado.

Tamaños

Es importante que los elementos más destacados estén en un tamaño considerablemente mayor que el resto, para marcar el mensaje principal y para que la tipografía tome protagonismo, siendo un elemento atractivo y diferenciador.

Colores

Siempre se ha de garantizar una buena lectura de los textos, de forma que resalten del fondo con un color que les permita buena lectura. Es un buen criterio utilizar la regla de fondo claro utilizar texto oscuro o negro, y a la inversa, en fondo oscuro o color saturado utilizar texto claro o blanco. Evitando los complementarios por efecto de vibración. Tampoco rellenar los textos con líneas finas para evitar efecto moire.

Crear líneas o perfiles a las letras 

A veces para destacar en el fondo se recurre a utilizar líneas o perfiles que rodean la letra, hay que evitar esta opción en tipografías de versión thin o de asta de letra fina porque dificulta su lectura. Se recomienda utilizar versiones de la familia tipográfica con ésta opción, o solo utilizarlo en tipografías de asta gruesa o versión bold, con un perfil de línea no muy grueso. Otra opción para destacar la tipografía del fondo es utilizar el efecto de sombreado o resplandor que podemos encontrar en los programas de diseño de Adobe, pero utilizándolo solo en fotografías de asta normal o gruesa y en tamaños relativamente grande, a partir de 18pts, con una sombra muy sutil, que casi no se perciba y o alejada de la tipografía.

Logotipos

Para crear logotipos que destaquen frente a la competencia se puede utilizar una tipografía creada y darle una vuelta, incluir un elemento entre las letras o modificar sus contornos vectorizando la tipografía, se puede hacer desde Adobe Illustrator o Adobe Indesign por medio de “Crear contornos”.

Seguro que te faltan segundos para probar estas fotografías tan increíbles, ¿no? ¿Cuál te ha enamorado más? ¡Atrévete a enviarnos tus pruebas y presume de diseño!

Como cuidar tu tatuaje

El tatuaje es una herida y hay que cuidarlo como tal.
Con esta serie de cuidados y normas tu tatuaje no te dará problemas durante su cicatrización.

Una vez tatuado retirar el vendaje a las dos o tres horas.
Lavar con la mano cuidadosamente con agua tibia y jabón neutro o antiséptico, no frotar con esponjas o similar.
Secar con la toalla en forma de tampón.
Una vez seco dar una fina capa de la Crema Recomendada por el tatuador.
Siempre que se pueda llevarlo al descubierto (aire), no tapar salvo que sea imprescindible.
Aplicar la CREMA durante 15 días tres o cuatro veces al día.
El tatuaje debe de estar siempre hidratado, nunca dejar que se seque.
Las dos o tres primeras noches tapar con papel de cocina, para pasar la noche, extiende una capa de crema mayor, es aconsejable poner vaselina o crema de manos sobre el papel para que así el papel no absorba la crema que se ha extendido sobre el tatuaje.
En el caso de que el vendaje se quede pegado al tatuaje, retirar humedeciéndolo con agua.
Si directamente sobre el tatuaje va ropa interior o ropa muy ajustada, tapar el tatuaje para evitar dañar al rozarlo, hasta que se haya regenerado la piel 5 o 6 días.
Al 4 o 5 día empezara el tatuaje como a pelarse y se cubrirá con un piel muy finita, es normal, no arrancar las contras, ni rrascar el tatuaje si pica.

Datos a tener en cuenta:

No aplicar Agua Oxigenada, Betadine etc, etc.
No aplicar sobre el tatuaje colonias, maquillajes o toallitas húmedas durante la cicatrización.
No exponer el tatuaje al sol durante el primer mes.
No bañarse en piscinas o mar durante el primer mes.
No ponerse prendas que dejen pelusa sobre el tatuaje mientras este cicatrizando.
En caso de que se produjeran complicaciones o algún tipo de enfermedad derivada de tu tatuaje, debes de consultar a tu medico habitual.

El cuidado del tatuaje es responsabilidad directa del cliente, no seguir los pasos aquí indicados influye directamente en el resultado final.

Cómo enviar parámetros entre documentos HTML usando JavaScript

En mi articulo anterior, se pudo ver, como se guarda información mediante el uso de una base de datos creada en el lado de cliente, gracias a una de las nuevas características de html5. Claro esta que así como una herramienta, característica o método, ya sea nuevo o viejo, tenga una ventaja, también trae consigo desventajas, y es bueno tener conocimiento de estas.

Una desventaja la cual me encontré en el camino mientras desarrollaba, fue que, al dar click a un botón o cualquier elemento dentro de la pagina que me enviara a otra pagina, los datos dentro de la nueva pagina no eran visibles.

Esta desventaja se puede solucionar desarrollando nuestra aplicación web mediante la arquitectura SPA (Single Page Application o Aplicación de una sola pagina) , esto nos permite tener una mejor fluidez en nuestra pagina, y ademas tendrá una apariencia como las aplicaciones de escritorio. Esta experiencia es buena para el usuario, ya que podrá tener todo en una sola vista.

En la imagen anterior, se puede ver un diseño que se puede usar, una cabecera, el cual se coloca el titulo de la aplicación o nombre d la pagina, una barra lateral, o también puede ser seguido de la cabecera o en donde quieran, y un espacio donde ira el contenido, el cual se cambiara dependiendo la opción que estemos este nos mostrara información relativa en donde estemos situados en la aplicación. Por lo general recomiendo crear un div, el cual servirá como contenedor de la información a mostrar, lo diferenciamos con un identificador, de preferencia yo uso contenedor.

A continuación, explicare como realizar la aplicación e iré colocando el código. Usare el framework Materializecss para darle estilo a nuestra aplicación, html, javascript, jquery; y también como enviar los parámetros entre las diferentes paginas.

Primero veremos el código de las paginas html

index.html

<!DOCTYPE html>
 
<html>
    
    <head>
        
        <title>SPA - Enviando parametros</title>
        
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        
        <link href="materialize/css/materialize.min.css" rel="stylesheet" type="text/css"/>
        
    </head>
    
    <body>
        
         <nav>
            <div class="nav-wrapper blue lighten-1">
              <a href="#" class="brand-logo center">SPA</a>              
            </div>
         </nav>
        
        <div class="row container">
            
            <div class="col s12 m6 l3">
                
                <ul class="collection">                  
                  <li class="collection-item" id="registrar">Registrar</li>
                  <li class="collection-item" id="consultar">Consultar</li>                  
                </ul>
                
            </div>
            
            <div class="col s12 m6 l9" id="contenedor">                
                
                
                
            </div>
            
        </div>
        
        <script src="jquery/jquery-1.11.3.min.js" type="text/javascript"></script>
        <script src="jquery/jquery-2.1.4.min.js" type="text/javascript"></script>        
        <script src="js/clases.js" type="text/javascript"></script>
        
    </body>
    
</html>

formulario.html

<div class="divider"></div> 
 
    <div class="row">
        <form class="col s12">
 
          <div class="row">
 
            <div class="input-field col s12 l6">
                <input  id="nombretxt" type="text" class="validate" placeholder="Nombre" required>                            
            </div>
 
            <div class="input-field col s12 l6">
                <input id="apellidotxt" type="text" class="validate" placeholder="Apellido" required>                            
            </div>
 
            <div class="input-field col s12 l6">
                <input  id="telefonotxt" type="tel" class="validate" placeholder="Telefono" required>
            </div>
 
            <div class="input-field col s12 l6">
                <input id="correotxt" type="email" class="validate" placeholder="Correo" required>
            </div>
 
          </div>                        
 
        </form>
 
        <div class="row">
            <div class="col s12 m6 l6 waves-block btn  blue lighten-1" id="btn-registrar">
                Registrar
            </div>
            
            <div class="center col s12 m6 l6" id="mensaje"></div>
        </div>
 
    </div>
 
<script src="jquery/jquery-1.11.3.min.js" type="text/javascript"></script>
<script src="jquery/jquery-2.1.4.min.js" type="text/javascript"></script>
<script src="js/index.js" type="text/javascript"></script>

registros.html

<table>
    
    <thead>
      <tr>
          <th data-field="Tareas">Usuarios</th>
      </tr>
    </thead>
 
    <tbody id="table_user">
    </tbody>
    
  </table>
 
 
 
<script src="jquery/jquery-1.11.3.min.js" type="text/javascript"></script>
<script src="jquery/jquery-2.1.4.min.js" type="text/javascript"></script>
<script src="js/registros.js" type="text/javascript"></script>

Si, se pudieron dar cuenta, en los archivos html expuestos anteriormente, solo el index posee el head, y los otros solo posen etiquetas que van dentro del body, esto se debe, a que vamos a cargar las paginas dentro de div, con el fin de no recargar a pagina complta cada vez que deseamos cambiar de vista.

index.js

$(document).ready(function (){
    
    var btn_consulta, btn_registro;
    
    btn_consulta = $('#consultar');
    btn_registro = $('#btn-registrar');
    
    btn_registro.on('click', CapturaDatos);
    
    function CapturaDatos(){        
        
        var c_nombre, c_apellido, c_telefono, c_correo, mensaje, usuario, usuarios;
        
        usuarios = [];
        
        c_nombre = $('#nombretxt').val();
        c_apellido = $('#apellidotxt').val();
        c_telefono = $('#telefonotxt').val();
        c_correo = $('#correotxt').val();
        
        mensaje = $('#mensaje');
        
        if(c_nombre === '' || c_apellido === '' || c_telefono === '' || c_correo === ''){
            mensaje.empty();
            mensaje.append('<p class="red-text">Debe llenar todos los campos</p>');
        }else{
            
            usuario = {
                nombre: c_nombre,
                apellido: c_apellido,
                telefono: c_telefono,
                correo: c_correo
            };
            
            //console.log(usuario);
            usuarios.push(usuario);
            registro.setUser(usuarios);
            LimpiarCampos();
            mensaje.empty();
            mensaje.append('<p class="green-text">Usuario guardado</p>');
 
            
        }
        
        
    };
    
    function LimpiarCampos(){
        
        $('#nombretxt').val('');
        $('#apellidotxt').val('');
        $('#telefonotxt').val('');
        $('#correotxt').val('');
        
    };
    
    btn_consulta.on('click', LoadRegistros);
    
    function LoadRegistros(){
        
        var component = 'registros.html';
        
        $.ajax({
            mimeType: 'text/html; charset=utf-8', 
            url: component,
            type: 'GET',
            dataType: "html",
            async: true,
            success: function(data) {
                $('#contenedor').html(data);
            },
            error: function (jqXHR, textStatus, errorThrown) {
                alert(errorThrown);
            }
        });        
    };
    
});

registros.js

$(document).ready(function (){
    
    var btn_registrar;
    
    btn_registrar = $('#registrar');
    
    btn_registrar.on('click', LoadIndex);
    
    function LoadIndex(){
        
        var component = 'formulario.html';
        
        $.ajax({
            mimeType: 'text/html; charset=utf-8', 
            url: component,
            type: 'GET',
            dataType: "html",
            async: true,
            success: function(data) {
                $('#contenedor').html(data);
            },
            error: function (jqXHR, textStatus, errorThrown) {
                alert(errorThrown);
            }
        });        
    };
    
        
    function LoadUsuarios(){
        
        var usuarios, tabla, html;
        
        usuarios = registro.getUser();
        tabla = $('#table_user');
        
        if(usuarios === undefined){
             
             tabla.empty();
             html = '<tr>';
             html += '<td class="row">';
             html += '<div class="col s12">No hay usuarios</div>';
             html += '</td>';
             html += '</tr>';
             
             tabla.append(html);
        
        }else{
            
                         
             tabla.empty();
             html = '<tr>';
             html += '<td class="row">';
             html += '<div class="col s12">'+ usuarios[0].nombre +'</div>';
             html += '<div class="col s12">'+ usuarios[0].apellido+'</div>';
             html += '<div class="col s12">'+ usuarios[0].telefono+'</div>';
             html += '<div class="col s12">'+ usuarios[0].correo +'</div>';
             html += '</td>';
             html += '</tr>';
             
             tabla.append(html);
            
        }
        
    };
    
    LoadUsuarios();   
    
});

clases.js

var registro = new Registro;
 
function Registro(){
    
    Registro.prototype.setUser = function (persona){
        personas = persona;
    };
 
    Registro.prototype.getUser = function (){
        return personas;
    };   
    
    Registro.prototype.Formulario = function (){
        
        var component = 'formulario.html';
        
        $.ajax({
            mimeType: 'text/html; charset=utf-8', 
            url: component,
            type: 'GET',
            dataType: "html",
            async: true,
            success: function(data) {
                $('#contenedor').html(data);
            },
            error: function (jqXHR, textStatus, errorThrown) {
                alert(errorThrown);
            }
        });        
        
    };
 
    var personas;
    
}
 
registro.Formulario();

Bueno, ahora pongamos un poco de atención al archivo clases.js, podemos ver como creamos un nuevo registro, lo que nos permite declarar las funciones creadas mediante esta forma, agregando prototype, nos permite incluso, cambiar una función, pudiendo agregarle, mas funcionalidades, y podemos llamar de forma global cualquier función en cualquier archivo que necesitemos.

migrar wordpress a otro servidor

Preparando el terreno

Antes de empezar, debemos tener:

  • Acceso a la base de datos antigua (phpMyAdmin). Llamemosle phpMyAdmin #1.
  • Acceso a la base de datos nueva (phpMyAdmin). Este será phpMyAdmin #2.
  • Los datos de conexión a la base de datos nueva.
  • Acceso FTP al servidor antiguo, que llamaremos FTP #1.
  • Acceso FTP al servidor nuevo, que acortaremos con FTP #2.

¡Y recuerda que el nuevo servidor debe cumplir los requisitos de WordPress!

Lo primero es acceder al FTP #1 y descargar todos los archivos de la raíz de instalación de WordPress (donde estén las carpetas wp-admin, wp-content y wp-includes, esa es la raiz de WordPress). Mientras se descarga vamos a poner unos ajitos a freir… digo, vamos accediendo al phpMyAdmin #1 y accedemos a la base de datos donde están todas las tablas de WordPress. Este es un paso importante, porque si no lo hacemos así, luego la importación fallará. Es un paso a veces un poco absurdo de phpMyAdmin, sobre todo cuando sólo tenemos una base de datos, pero necesario por si tuvieramos más. Seguidamente, pulsaremos en la pestaña “Exportar” que tenemos arriba a la derecha.

Ahora depende un poco de la versión de phpMyAdmin que tengamos, pero las más avanzadas solo muestran dos opciones: Básica y Avanzada. Si es tu caso, elije Avanzada y la pantalla que verás será parecida a la que voy a explicar (versión antigua).

Veremos un cuadro con todas las tablas. Debajo vemos “Seleccionar Todo / Deseleccionar todo”. Pulsamos en Seleccionar Todo, y nos aseguramos de que está seleccionada debajo la opción “SQL”.

migrar wordpress

No es necesario modificar ninguna de las opciones del cuadro de “Opciones”. Finalmente, abajo hay un cuadro en el que marcaremos que queremos un archivo descargable, comprimido con bzip. Podemos marcar el tipo de compresión que más nos guste, pero bzip hace un archivo “más comprimido”, algo muy importante de cara a importar luego una base de datos, ya que muchos servidores ponen restricciones de tamaño absurdamente bajas, como por ejemplo, 2048MB (2MB). Estaréis conmigo en que cualquier base de datos de una web con cierto rodaje pesa algo más…

migrar wordpress a otro servidor imagen 2

A estas alturas ya debería haberse descargado todo el contenido de FTP #1. Si no, espera un poco (en lo que esperas, podrías contratar una linea de ADSL más rápida, sólo es una sugerencia… no, es broma, sabemos que son muchos archivos y eso tarda un pelín).

¿Ya? Bien, ahora abre el archivo wp-config.php y modifica las siguientes líneas:


// ** Ajustes de MySQL. Solicita estos datos a tu proveedor de alojamiento web. ** //
/** El nombre de tu base de datos de WordPress */
define('DB_NAME', 'nombre_de_tu_base_de_datos');

/** Tu nombre de usuario de MySQL */
define(‘DB_USER’, ‘usuario_de_tu_base_de_datos’);

/** Tu contraseña de MySQL */
define(‘DB_PASSWORD’, ‘password’);

/** Host de MySQL (es muy probable que no necesites cambiarlo) */
define(‘DB_HOST’, ‘localhost’);

Hecho esto, sube el WordPress que acabas de descargarte al FTP #2. Mientras tanto, accedemos a phpMyAdmin #2 y entramos en la base de datos donde vamos a instalar el WordPress. Aquí buscamos el botón “Importar”. Encontramos un campo para subir un archivo, que es nuestro archivo comprimido de phpMyAdmin #1, y lo subimos. Si lo hemos hecho bien, nos debería decir que la importación se ha realizado correctamente.

El camino ahora se divide. Nos podemos encontrar con los siguientes casos: migración sin cambio de dominio y migración con cambio de dominio.

Migrar WordPress a otro servidor sin cambiar de dominio

Bien, imaginemos que accedemos a nuestra web a través de http://midominio.com, y que hemos hecho un traspaso de dominio y sólo vamos a cambiar de hosting, a nuestro dominio seguiremos accediendo con http://midominio.com. En ese caso, sólo tendremos que importar el archivo que nos descargamos desde phpMyAdmin #1.

Con esto y un bizcocho, ya hemos terminado la migración.

Migrar WordPress a otro servidor cambiando de dominio

Nos va la marcha. Además de cambiar de servidor, cambiamos de dominio. Ojo: con “cambiar de dominio” me refiero a todo cambio en la URL de nuestro WordPress. Esto también afecta a que pasemos de http://midominio.com/subdirectorio a http://midominio.com, incluso aunque no cambiemos de servidor. Al fin y al cabo, vamos a tener que modificar la base de datos.

Desde phpMyAdmin #2, una vez importada la base de datos, accedemos a la pestaña SQL y ejecutamos (una a una mejor) las siguientes líneas:


UPDATE wp_options SET option_value = REPLACE ( option_value, 'dominioantiguo.com', 'dominionuevo.com' );

UPDATE wp_posts SET guid = REPLACE ( guid, 'dominioantiguo.com', 'dominionuevo.com' );

UPDATE wp_posts SET post_content = REPLACE ( post_content, 'dominioantiguo.com', 'dominionuevo.com' );

UPDATE wp_postmeta SET meta_value = REPLACE ( meta_value, 'dominioantiguo.com', 'dominionuevo.com' );

Esto detectará todas las coincidencias de “dominioantiguo.com” y las sustituirá por “dominionuevo.com”.

Finalizando

Hecho todo esto, si la subida de archivos a FTP #2 ha acabado, tu WordPress ya debería funcionar en el servidor nuevo. Si no es así, revisa el tutorial, y ten en cuenta:

  • Si acabas de comprar tu dominio/servidor, es posible que aun las DNS no estén propagadas. Estos cambios suelen estar totalmente aplicados a nivel global unas 24/48 horas después de la compra.
  • Revisa el archivo wp-config.php que has subido, quizá has puesto mal los datos de la base de datos.
  • Revisa que has subido correctamente los archivos y la base de datos.

Para cualquier otra duda, intentaremos resolverla lo antes posible en el formulario de aquí abajo.

“Nada es más permanente que una solución temporal”
.- Primera ley de Thomas

Usar el Thickbox nativo de WordPress

WordPress incluye en sus librerías el sistema de ventana modal Thickbox, el cual podemos aprovechar usando el siguiente código en el archivo functions.php de nuestro tema:

function add_themescript(){
 if(!is_admin()){
 wp_enqueue_script('jquery');
 wp_enqueue_script('thickbox',null,array('jquery'));
 wp_enqueue_style('thickbox.css', '/'.WPINC.'/js/thickbox/thickbox.css', null, '1.0');
 }
}
add_action('init','add_themescript');

Adicionalmente, para llamar las imágenes de precarga y cierre de la ventana modal debemos incluir en nuestro footer.php, antes de la etiqueta wp_footer() lo siguiente:

<script type="text/javascript">
if ( typeof tb_pathToImage != 'string' )
{
    var tb_pathToImage = "<?php echo get_bloginfo('url').'/wp-includes/js/thickbox'; ?>/loadingAnimation.gif";
}
if ( typeof tb_closeImage != 'string' )
{
    var tb_closeImage = "<?php echo get_bloginfo('url').'/wp-includes/js/thickbox'; ?>/tb-close.png";
}
</script>

Para usar el thickbox en un enlace, ya sea imagen o contenido web la estructura de la etiqueta de vínculo debe ser algo como:

<a href="http://mipagina.com/seccion?height=450&width=600&TB_iframe=true" class="thickbox">Haz clic aquí</a>

 Uso condicional del script

Como nos sugiere Yoast, podemos condicionar el uso del script para páginas específicas así:

function yst_conditional_thickbox() {
  global $post;
  if (is_singular() &&
    strpos($post->post_content,'class="thickbox"') !== false) {
      wp_enqueue_script('thickbox');
      wp_enqueue_style('thickbox');
  }
}
add_action('wp_print_styles','yst_conditional_thickbox');
Scroll al inicio