Crear una página solo para usuarios en Wordpress

Crear una página personalizada que el contenido se vea solo para usuarios en Wordpress muy sencillo, aqui dejo el código para crear contenido solo para usuarios.
Para comenzar tienes dos opciones: crear un fichero PHP nuevo o duplicar el clásico page.php que encontrarás en la carpeta de tu theme.

Crear una página con contenido solo para usuarios en Wordpress

La segunda opción es la mejor para así usar los css de tu tema.
En los atributos de página puedes seleccionar la plantilla que has creado.

Recuerda de poner tus clases css de tu tema

Ver código

Conseguir certificados SSL/TLS gratuitos

Conseguir certificados sll gratuitos con Let’s Encrypt en Ubuntu

Introducción

Este tutorial te mostrará cómo configurar un certificado SSL/TLS de cifrado en un servidor Ubuntu 14.04 corriendo Apache como servidor web. También te mostrará cómo automatizar el proceso de renovación de certificado mediante cron job.

Los certificados SSL se utilizan dentro de los servidores web para cifrar el tráfico entre el servidor y el cliente, que proporciona seguridad adicional para los usuarios que acceden a tu aplicación. Let’s Encrypt proporciona una manera fácil de obtener e instalar certificados de confianza de forma gratuita.

Pre-requisitos

  • Un servidor con Ubuntu 14.04

  • Un servidor web Apache con 1 o más dominios configurados correctamente


1 – Actualizamos la lista de paquetes
$ sudo apt-get update

2 – Instalamos git
$ sudo apt-get install git

3 – Descargamos el cliente de Let’s Encrypt
$ sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

4 – Nos movemos a la carpeta donde descargamos el cliente de Let’s Encrypt
$ cd /opt/letsencrypt

5 – Creamos el certificado

Para un solo dominio
$ ./letsencrypt-auto --apache -d tudominio.com

Para un dominio y subdominios
$ ./letsencrypt-auto --apache -d tudominio.com -d www.tudominio.com -d blog.tudominio.com

No olvides que el dominio base (tudominio.com) debe ir al principio y en el caso de que solo quieras www.tudomino.com
$ ./letsencrypt-auto --apache -d www.tudominio.com

 

  • Opción Easy para permitir HTTP Y HTTPS

  • Opción Secure para redirigir todas las peticiones a HTTPS


Si el proceso se realiza correctamente el resultado será tener una clave TLS, una firma SHA-256 y nuestro servidor web estará correctamente configurado para hacer uso de las conexiones seguras HTTPS.

Para verificar el estado de nuestro certificado SSL visitamos la web
https://www.ssllabs.com/ssltest/analyze.html?d=tudominio.com&latest

Nota: No olvides reemplazar tudominio.com

Los certificados de Let’s Encrypt son válidos por 90 días, para renovarlos ejecuta el siguiente comando:
$ ./letsencrypt-auto certonly --apache --renew-by-default -d tudominio.com www.tudominio.com

Si proporcionaste varios nombres de dominio cuando hiciste la instalación del certificado, tendrás que pasar la misma lista de dominios de nuevo en el comando de la renovación, de lo contrario el cliente de Let’s Encrypt va a generar un nuevo certificado en vez de renovar el existente.

Automatizar el proceso de renovación

Una forma práctica para asegurar que tus certificados se renueven automáticamente es crear una tarea programada que se encargue automáticamente de las solicitudes de renovación.

Para facilitar este proceso, vamos a utilizar un script de shell que verifica la fecha de caducidad del certificado para el dominio proporcionado y solicita una renovación cuando el vencimiento es inferior a 30 días. El script será programado para ejecutarse una vez por semana. De esta manera, incluso si falla una tarea programada, hay un tiempo de 30 días para intentarlo de nuevo cada semana.

En primer lugar, descarga el script y hazlo ejecutable. Siéntete libre de revisar el contenido del script.
$ sudo curl -L -o /usr/local/sbin/le-renew http://do.co/le-renew

$ sudo chmod +x /usr/local/sbin/le-renew

Puedes ejecutar el script manualmente
$ sudo le-renew tudominio.com

Si no hay necesidad de renovar el certificado, el script solo nos dirá cuántos días falta para renovarlo

A continuación, vamos a editar el crontab para crear un nuevo cron job que ejecutará este comando cada semana. Para editar el crontab:
$ sudo crontab -e

Incluye el siguiente contenido, todo en una sola línea:
30 2 * * 1 /usr/local/sbin/le-renew tudominio.com >> /var/log/le-renew.log

Guarda los cambios

Nota: Esto creará un nuevo cron job que ejecutará el comando le-renew todos los lunes a las 2:30 am. La salida producida por el comando será canalizado a un archivo de registro ubicado en /var/log/le-renewal.log.

Permitir subir archivos en los comentarios de wp.

¿Desea permitir a los usuarios añadir archivos adjuntos en los comentarios de WordPress?

De forma predeterminada, los comentarios de WordPress se limitan a texto sin embargo se puede permitir a los usuarios subir archivos adjuntos como imágenes y gifs...etc. Vamos a mostrarle cómo permitir a los usuarios añadir archivos adjuntos en los comentarios de WordPress.
Comentarios Adjuntos para WordPress
Lo primero que necesita es instalar y activar el plugin.
Tras la activación, es necesario visitar Ajustes » Comentarios 'para configurar la configuración del plugin.

Eso es todo espero le haya sido de utilidad.

Lo que debes saber sobre el navegador de google Chrome

Google Chrome es el navegador más utilizado.

Que son sobre las URLs secretas de Chrome?

Son direcciones que nos dan acceso a funciones internas del navegador e incluso a funciones reservadas para los desarrolladores.

Las URLs son de tipo  Chrome:// seguido de uno o varias palabras más según la función que habilita.

Copia y pega en la barra de direcciones.

Listado y funciones de las URLs secretas de Chrome



  • chrome://accessibility– Muestra información sobre accesibilidad de cada una de las pestañas abiertas y si la función está activada de forma global.

  • chrome://appcache-internals– Información sobre páginas appcached y el espacio que están ocupando.

  • chrome://apps/– Listado de todas las aplicaciones instaladas.

  • chrome://blob-internals/– Información sobre Binary Large Objects (blobs).

  • chrome://bookmarks– Abre directamente el Administrador de marcadores.

  • chrome://cache– Muestra todos los objetos en cache, las webs, las imágenes y los scripts.

  • chrome://chrome/– Abre la página Información de Google Chrome. Aquí se muestra la versión y la posibilidad de actualizar.

  • chrome://chrome-urls– Muestra el listado de URLs secretas de Chrome.

  • chrome://components/– Listado de todos los componentes de Chrome con la posibilidad de buscar actualizaciones.

  • chrome://conflicts/– En esta página, se incluyen todos los módulos cargados en el proceso principal y los módulos registrados para cargarse más adelante.

  • chrome://crashes/– Muestra un informe de todos los casos en que la página no responde o se cierra.

  • chrome://credits– Los habituales créditos de una aplicación.

  • chrome://device-log/– Registro de dispositivo.

  • chrome://devices/– Dispositivos conectados a Google Chrome como impresoras.

  • chrome://discards/– Listado de pestañas descartadas durante la sesión, esto sucede por falta de memoria RAM.

  • chrome://dns– Si el prefetching está activado, esta página muestra toda la información al respecto.

  • chrome://downloads– Acceso directo al gestor de descargas de Chrome con un historial de todo lo que hemos bajado.

  • chrome://extensions– Muestra todas las extensiones que tenemos instaladas.

  • chrome://flags– Funciones experimentales y de todo tipo que pueden ser activadas o desactivadas desde esta página. Nos permite acceder a funciones experimentales desactivadas por defecto.

  • chrome://flash– Información detallada sobre el plugin Flash integrado en Chrome.

  • chrome://gcm-internals/– Muestra información sobre Google Cloud Messaging.

  • chrome://gpu– Muestra toda la información relacionada con la tarjeta gráfica, como por ejemplo la aceleración por hardware.

  • chrome://help/– Abre la página Información de Google Chrome. Aquí se muestra la versión y la posibilidad de actualizar.

  • chrome://histograms – Histogramas del navegador.

  • chrome://history– Nos abre el gestor del Historial de Chrome donde podemos ver todas las páginas web que hemos visitado y decidir si queremos borrarlo.

  • chrome://indexeddb-internals/– Información IndexedDB para el perfil de usuario.

  • chrome://inspect– Opción para inspeccionar elementos, páginas o extensiones.

  • chrome://invalidations/– Información de invalidaciones.

  • chrome://local-state/– Listado de funciones y si están o no activadas en la instalación local.

  • chrome://media-internals– Todos los elementos multimedia que hemos reproducido.

  • chrome://nacl– Información sobre el plugin Chrome’s NaCl (Native Client)

  • chrome://net-internals– Información detalla de la red incluyendo conexiones SPDY o DNS lookups.

  • chrome://network-error/ – Muestra los errores de la red.

  • chrome://network-errors/– Muestra los errores de la red.

  • chrome://newtab– Abre una nueva pestaña.

  • chrome://omnibox– Todo sobre la función Omnibox y la posibilidad de cambiar algunos parámetros de la barra de navegación.

  • chrome://password-manager-internals/– Registros del gestor de contraseñas integrado del navegador.

  • chrome://plugins– Listado de todos los plugins y su estado.

  • chrome://policy– Todas las políticas activadas en el navegador como la Alerta de protección de contraseña.

  • chrome://predictors– Listado de términos para el autocompletado basado en la actividad pasada.

  • chrome://print– Página para imprimir.

  • chrome://profiler – Información de seguimiento del perfil.

  • chrome://quota-internals– Información sobre la cantidad de espacio disponible para Google Chrome y el perfil active.

  • chrome://serviceworker-internals/– Todos los Service Workers registrados por el navegador.

  • chrome://settings– Abre la página de ajustes.

  • chrome://signin-internals – Más información y estadísticas.

  • chrome://suggestions/– Sugerencias.

  • chrome://supervised-user-internals/— Listado de usuarios activos y posibilidad de probar filtros por URL.

  • chrome://sync-internals– Información detallada sobre la función de sincronización.

  • chrome://system/– Acerca del sistema con datos de diagnóstico del sistema.

  • chrome://terms– Condiciones del servicio de Google Chrome.

  • chrome://thumbnails/– Miniaturas almacenadas para las páginas web más visitadas.

  • chrome://tracing– Al activar la opción Record, el navegador empezará a recoger todos los datos sobre nuestra actividad.

  • chrome://translate-internals/– Información sobre la función de traducción integrada en el navegador.

  • chrome;//usb-internals– Posibilidad de probar dispositivos USB conectados.

  • chrome://user-actions/– Listado de acciones llevadas a cabo por el usuario, como por ejemplo el cierre de pestañas.

  • chrome://version– Información sobre la versión de Chrome, sistema operativo, JavaScript, Flash, líneas de comandos, etc.

  • chrome://view-http-cache– Páginas en caché.

  • chrome://webrtc-internals/– Crear un volcado de las PeerConnection.

  • chrome://webrtc-logs/– Registros de WebRTC capturados.


Además de estas, existen otras que Google no enlaza directamente por que pueden bloquear el navegador o cerrarlo. Salvo la quit o restart, el resto son para que los desarrolladores puedan probar diferentes estados del navegador.

Las URLs secretas de Chrome son :

  • chrome://badcastcrash

  • chrome://crash

  • chrome://crashdump

  • chrome://kill

  • chrome://hang

  • chrome://shorthang

  • chrome://gpuclean

  • chrome://gpucrash

  • chrome://gpuhang

  • chrome://memory-exhaust

  • chrome://ppapiflashcrash

  • chrome://ppapiflashhang

  • chrome://quit/

  • chrome://restart/

Arreglar enlaces después de un cambio de dominio en wordpress



La opción más rápida es reemplazar los enlaces directamente desde la base de datos con instrucciones SQL. Tan solo debes utilizar la siguiente instrucción para aplicar las modificaciones en el contenido de tus entradas y páginas:
UPDATE wp_posts 
SET post_content =
REPLACE (post_content, 'http://midominio.com', 'http://midominionuevo.com');




Biblioteca de Medios. En tal caso, puedes usar esta sentencia SQL:
UPDATE wp_posts 
SET guid =
REPLACE (guid, 'http://midominio.com', 'http://midominionuevo.com');

y, aún así, seguiríamos sin tener todo actualizado faltan las tablas wp_options o wp_postmeta a de tu base de datos WordPress.
Esto se cambia desde ajustes generales.
Una forma más sencilla de hacerlo si esto es muy complicado para ti es con este plugin.

Cambiar permisos de carpetas y archivos en tus instancias ec2 o google cloud

Si deseamos cambiar de propietario:
sudo chown <usuario> (archivo o carpeta)

sudo chown <usuario> -R <carpeta> (carpeta y todo su contenido)

El primero solo modifica un archivo, el segundo modifica a todos los archivos que contiene dentro ese directorio.

Si queremos cambiar de Grupo:
sudo chgrp <grupo> <carpeta> (archivo o carpeta)

sudo chgrp <grupo> -R <carpeta> (carpeta y todo su contenido)

Al igual que en el caso anterior el primero solo modifica un archivo, el segundo modifica a todos los archivos que contiene dentro ese directorio.

Ahora vayamos un poco más rápido, si queremos cambiar de Usuario y Grupo a la vez emplearemos:
sudo chown usuario:grupo <carpeta> (archivo o carpeta)

sudo chown usuario:grupo -R <carpeta> (carpeta y todo su contenido)

Fijaros en que debéis de marcar un usuario y grupo valido.

Si deseamos cambiar los Privilegios de algún directorio o capeta tenemos:
sudo chmod <permisos> <opciones> <archivo o carpeta>

sudo chmod +x foo.sh (dar permisos de ejecución)

Recordemos que la parte de privilegios debemos de meter combinaciones validas, algunas de ellas son 664, 777, 764 ente otras.

El primer dígito da los privilegios para el propietario.
El segundo dígito da los privilegios para el grupo al que pertenece el propietario.
El tercer dígito para los usuarios fuera del grupo del propietario.

Literalmente estos privilegios se escriben:

(-w-r-x) no lectura ni escritura ni ejecución.
(-w-x+r) solo lectura.
(+w+x+r) escritura y lectura.
(+w+x+r) escritura, lectura y ejecución.
(u) modificador de usuario (g) modificador de grupo (o) modificador para los “otros”.

Vídeos incrustados de WordPress Responsives

Vídeos incrustados de WordPress 

Aplicar un max-width: 100% (generalmente con esto sirve para que algo se adapte a todo tipo de dispositivos), el alto del incrustado hacía algo extraño; en unos vídeos era demasiado alto y en otros demasiado estrechos.

Busqué varias soluciones: 

Al final, la solución es algo más rebuscada, hay que añadir un filtro como este:
/* Adds a wrapper for video embeds */
add_filter('embed_oembed_html', 'my_embed_oembed_html', 99, 4);
function my_embed_oembed_html($html, $url, $attr, $post_id) {
return '<div class="video-container">' . $html . '</div>';
}

Vamos con el css
.video-container {
position: relative;
padding-bottom: 56.25%;
padding-top: 30px;
height: 0;
overflow: hidden;
}
 
.video-container iframe,
.video-container object,
.video-container embed {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}

Crear un nuevo widget personal en Wordpress

Crear un nuevo  widget


Abriremos el fichero functions.php de la raíz de la plantilla, su ruta es:
/wp-content/themes/mi_tema/functions.php

En este fichero, añadiremos el siguiente código:
//functions.php nuevas posiciones widget
function endeos_widgets_init() {
    register_sidebar( array(
        'name'          => 'Nueva zona de widgets',
        'id'            => 'id-del-widget',
        'before_widget' => '<div class="classe-widget">',
        'after_widget'  => '</div>',
    ) );
}

add_action( 'widgets_init', 'endeos_widgets_init' );

Básicamente es la creación e inicialización de la zona de widget. Al hacerlo, deberíamos verlo reflejado en el Dashboard de WordPress:

 

LLamar a los widgets


Los widgets que pongamos en esta nueva zona se carguen en algún sitio. Supongamos que queremos que estos widgets se carguen al final de la cabecera, pues deberemos modificar el fichero header.php y añadir el código en la parte concreta que nos interese (por ejemplo, justo antes de la etiqueta </header>):

La forma más correcta de hacerlo es así..
//Código para cargar widget en otro fichero php (footer, header, etc)
    <?php if ( is_active_sidebar( 'id-del-widget' ) ) : ?>
        <div id="id-del-widget" class="primary-sidebar widget-area" role="complementary">
            <?php dynamic_sidebar( 'id-del-widget' ); ?>
        </div><!-- #primary-sidebar -->
    <?php endif; ?>

Dependiendo de dónde queremos cargar los widgets, escogeremos un fichero que se encuentran en la  la plantilla.

Crear un tema hijo en wordpress

1. Estructura básica de un tema hijo


Deberemos crear el directorio que contendrá el tema hijo en la ruta /wp-content/themes/. Lo usual es que el nombre de dicho directorio sea “nombre_plantilla-child”, pero realmente podemos poner el nombre que nos apetezca.

Dentro de este directorio, crearemos dos ficheros:

  • style.css

  • functions.php


Con esto ya tendremos la estructura básica creada.

2. Hoja de estilos


La cabecera se inserta en forma de comentario y tiene la siguiente estructura:
/*
Theme Name: Nombre de tu tema hijo
Description: Descripción de tu tema hijo.
Author: Tu Nombre
Author URI: http://tu-web.com
Template: nombre_tema_madre
Version: 1.0.0
Text Domain: nombre_tema_hijo
*/

Es importante fijarse en el parámetro Template: es donde se especifica cuál es el tema “Padre” y es la estructura que tomará por defecto el tema hijo.

3. Fichero de funciones


En el fichero functions.php deberemos poner el código inicial para enlazar las hojas de estilo del tema “Padre”. Para ello, añadiremos el siguiente código PHP:
<?php
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {   
wp_enqueue_style( 'plantilla-padre', get_template_directory_uri() . '/style.css' ); 
}
?>

Donde pone “plantilla-madre” hemos de poner el nombre del directorio que contiene la plantilla “Madre”. Con esto ya tendremos enlazado su fichero de estilos. En otras palabras, si activamos el tema hijo, el fichero style.css del tema “Madre” también se va cargar.

Es posible que el fichero de estilos del tema hijo se cargue automáticamente, pero si ese no es el caso, deberemos sustituir el código anterior por el siguiente:
<?php
function theme_enqueue_styles() {

$parent_style = 'plantilla-padre';

wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' );
wp_enqueue_style( 'tema-hijo',
get_stylesheet_directory_uri() . '/style.css',
array( $parent_style )
);
}
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
?>

 

Ahora es momento de añadir estilos en nuestro fichero style.css, que sobrescribirán los estilos del tema original.

Si queremos modificar la estructura de la página que muestra un artículo, deberemos copiar el fichero single.php del tema original en nuestro tema hijo, luego, haremos todas las modificaciones que queramos sobre el fichero copiado.

Si queremos añadir otras funcionalidades, podemos añadir funciones en el fichero functions.php que hemos creado.