Activar el modo depuración en WordPress

Si estamos realizando cambios o desarrollando algo desde cero para WordPress es aconsejable que activemos el modo depuración para poder «ver» los mensajes y avisos que se nos puedan mostrar.

Por defecto, este modo depuración está desactivado.

¿Cómo podemos activar el modo depuración en WordPress?

Para activar el modo depuración en WordPress lo haremos usando la constante de PHP WP_DEBUG.

Como he dicho anteriormente, por defecto, ésta variable global está establecida a «false» por lo que si queremos activar el modo depuración deberemos establecerla a «true«.

¿Dónde hacemos esto?

Esto lo haremos en el fichero «wp-config.php» de nuestro WordPress de la siguiente manera:

define( 'WP_DEBUG', true ); // Activamos el modo depuración
define( 'WP_DEBUG', false ); // Desactivamos el modo depuración (opción por defecto)

Es muy sencillo y fácil pero debemos acordarnos de desactivarlo una vez que hayamos terminado con el desarrollo y pasemos nuestra web o desarrolo a real.

Espero que os haya sido de utilidad

Y ya sabéis, cualquier cosa me comentáis en un comentario.

Mucho ánimo!!

Crear Shortcode para restringir partes del contenido – Parte 1

Crear Shortcode para restingir el acceso a partes del contenido-parte 1

En esta ocasión vamos a ver cómo crear un shortcode para restringir partes del contenido de nuestras páginas o entradas de WordPress.

¿De qué estamos hablando?

Es posible que nos interese restringir ciertas partes de algunas página o entradas de nuestro blog por los motivos que sean.

Pero qué mejor que poner un ejemplo real, ¿Verdad?

Un ejemplo real

Os pongo el ejemplo de esta misma entrada en esta web.

Como comenté en algún artículo anterior, estamos comenzando una andadura que será larga y muy interesante en los terrenos de WordPress por lo que a parte de comentar y explicar los códigos «Snippets«, también daré la opción de descargar el mismo Snippet en formato plugin para que no tengamos nuestro fichero functions.php con tantas cosas e incluso podamos llegar a perderlo si algún día cambiamos de tema. Que pasará tarde o temprano.

Por lo tanto, al final de esta entrada daré la opción de descargar el plugin en cuestión. Ah! pero eso si! sólo para usuarios registrados.

No hay que preocuparse porque de momento es todo «by the face«. Simplemente quiero saber si esto que estoy haciendo sirve de algo y más adelante puedo montar algunos proyectos que tengo en mente y de los cuales os informaré de antemano.

Entonces el lo que os digo. cierta parte de esta entrada estará restringida a usuarios no registrados.

Esto es lo que vamos a hacer ahora.

La función que maneja el asunto

Eso es, vamos a escribir la función que maneje la lógica de este snippet o plugin.

Creamos una función que en mi caso la llamaré: «oaf-restrict-partial-content-shortcode«. Nada original, ya lo se…

function oaf_restrict_partial_content_shortcode(  ) {
}

Pues nada, ya la tenemos creada. Pero claro, habrá que escribir algo de lógica dentro, verdad?

La idea es que recoja el «contenido» y en función de que el usuario esté logueado o no, muestre una cosa u otra.

Por ejemplo, vamos a comprobar si:

  • El usuario está logueado (tiene que estar logueado para ver el contenido dentro del shortcode).
  • Si el contenido no es «null«. Es decir que tiene contenido.
  • Si no es un «feed«.

Estas son algunas de las comprobaciones que podemos realizar y para este ejemplo nos puede valer.

En posteriores tutoriales volveremos sobre este asunto para ir mejorando lo que hemos hecho.

Entonces, si el usuario está logueado Y el contenido no es «null» Y además no se trata de un «feed«, entonces la función retornará con contenido.

Pero si no es así, si no cumple alguna de las 3 condiciones anteriores, devolverá un texto en plan: «Este contenido sólo es visible para usuarios registrados. Regístrate!«.

Venga, vamos allá.

function oaf_restrict_partial_content_shortcode( $atts, $content = null ) {
	if ( is_user_logged_in() && !is_null( $content ) && !is_feed() ) {
		return $content;
	} else {
		return __( 'Upps! Este contenido sólo está disponible para usuarios registrados.', 'oaf_rpcs' );
	}
}

Es muy sencillo por lo que doy por sentado que se entiende correctamente el código.

Y el Shortcode, ¿Dónde está?

Eso es, nos falta añadir el código o función para crear el Shortcode.

Esto también es sencillo, lo único que tenemos que hacer es utilizar la función:

add_shortcode ();

Ya bueno, pero así sin más no haría nada.

Necesitamos 2 parámetros. Que son:

  • El nombre del Shortcode.
  • La función que gestiona el código del Shortcode.

Entonces:

add_shortcode ('restrict_pcs', 'oaf_restrict_partial_content_shortcode' );

Ahora si, ahora ya lo tenemos todo.

El Snippet completo

Este es el código completo de este Snippet:

Y ahora, como he prometido antes, a continuación disponéis del plugin que realiza lo mismo que el Snippet pero sin tener que incluir nada en nuestro functions.php.

Ya sabéis, lo descargáis y lo instaláis en vuestro WordPress.

Cómo usarlo

Para usar este shortcode que acabamos de crear tenemos que hacer lo mismo que con los demás shortcodes, es decir, introducir el contenido restringido dentro del comienzo y el fin del shorcode.

Por ejemplo. Si queremos restringir:  «Este contenido es super importante y tiene que estar restringido«. Haremos lo siguiente:

[restrict_pcs]Este contenido es super importante y tiene que estar restringido[/restrict_pcs]

Si el usuario está registrado y logueado, no tendrá ningún problema en ver el contenido restringido como muestro en la siguiente captura:

Plugin OAF Restrict Partial Content Shortcode
Plugin OAF Restrict Partial Content Shortcode 2

Ahora bien, si el usuario visitante no no está logueado, es decir, que no tiene cuenta en nuestro WordPress, verá el siguiente mensaje de aviso:

Perfecto. Ya lo veis!!

Bueno, al final este tutorial se a alargado un poco pero me gusta explicar las cosas poco a poco.

¿Y ya está?

Bueno, estar está. Jajaja… Pero no está ni por asomo visible o para andar enseñándolo por ahí.

Es por eso que estoy preparando una guía completa que compelte todo el proceso de la realización de este plugin. Eso sí, algunos contenidos estarán restringidos.

Haremos muchas cosas. Como por ejemplo darle un poco de estilo al mensaje, prepararlo para la traducción a otros idiomas, traducirlo al Español, Crear el «readme.txt«, etc…

Y al final de la guía realizaremos todo el proceso para publicarlo en el repositorio de http://www.wordpress.org.

¿Te animas?

Espero que te animes a seguir esta guía y otras que tengo en lista de espera.

Quiero Feedback

Pues eso, quiero que me comentéis cómo lo veis, que os gustaría que explicara mejor. Si voy muy lento, etc…

Bueno, por hoy lo dejamos aquí y ya seguiremos otro día.

Saludos y mucho ánimo!

Ver la parte 2

PHP 7: Novedades y cambios

Si eres un programador, desarrollador web o simplemente tienes algunas páginas webs realizadas con algún gestor de contenidos (cms) como WordPress, Joomla, Drupal, Magento, etc… seguro que te interesa saber que pasa con PHP 7 y que novedades y cambios trae consigo.

Yo he realizado algunas pruebas durante estos últimos días para comprobar de primera mano los cambios y novedades que se comentan en la comunidad de php.

Seguro que hay más cosas pero voy a intentar comentar unas pocas para que te hagas una idea.

¿Qué pasa con PHP 6? ¿Dónde está?

Si eres programador PHP seguro que sabrás que PHP 6 ya existía. Si, como una versión o proyecto experimental pero que nunca se llegó a poner en producción. Tampoco es que me preocupe mucho este asunto pero bueno, ahí queda como curiosidad.

El caso es que al existir PHP 6 como proyecto experimental, no se ha querido que la nueva versión de PHP produjera confusiones entre la comunidad de programadores y es por eso que tras la versión 5.6 se ha decidido pasar directamente a PHP 7.

Esto no hay que tomárselo de ninguna forma porque no aporta más. Es más, creo que incluso estoy de acuerdo con la decisión que se ha tomado.

Dos veces más rápido

Esto siempre nos gusta a todos, ¿A que si? Bueno, es lo que yo supongo porque a mi estas cosas me gustan mucho, claro que si y por eso asumo que a todos los programadores y programadoras nos gusta que nuestros programas carguen más rápido.

Pues si, el equipo de desarrollo de PHPNG ha optimizado el uso de memoria añadiendo compilación just-in-tim (JIT) lo que permite la compilación en tiempo de ejecución en lugar de antes de ejecución.

Es más, utilizando PHP 7 no solo el código se ejecutar más rápido sino que además necesitaremos menos servidores para servir a la misma cantidad de usuarios.

En resumen, el doble de peticiones por segundo!! Nada más y nada menos!

Mejora en el manejo de errores

En PHP nunca ha sido fácil el manejo de errores pero con el nuevo EngineException podremos sustituir los errores fatales por excepciones. De todas formas sin no se detecta la excepción, seguirá devolviendo los acostumbrados errores fatales como hasta ahora.

Para manejar o atrapar los errores, PHP 7 introduce una nueva clase parent. Esta clase es BaseException.

Sin duda una buena noticia para los programadores.

Soporte para sistemas Windows 64 bits

Hasta ahora, la versión actual de PHP no soporta números enteros de 64 bits y tampoco archivos grandes.

Esto se soluciona con PHP 7 ya que introduce soporte para versiones Windows de 64 bits. De esta forma se podrá ejecutar PHP en sistemas operativos Windows con más seguridad.

Claro que no es mi caso, al menos por ahora ya que siempre trabajo sobre entornos basados en linux. Pero bueno, ahí queda eso y siempre está bien este tipo de mejoras.

Nuevo operador de comparación combinada <=>

Interesante aporte. Este operador que ya existía en algunos lenguajes de programación, por fin está disponible en PHP 7.

¿Cómo funciona? Pues básicamente devolverá 0 si los dos operandos son iguales. 1 si el de la izquierda (antecedente) es mayor y -1 si es mayor el de la derecha.

<?php
/**
 * Operador de comparación combinada
 */
$array = [
    "1 <=> 1" => 1 <=> 1,
    "1 <=> 2" =>1 <=> 2,
    "2 <=> 1" => 2 <=> 1
];
var_dump($array);

Nuevo operador nulo coalescente  ??

Menudo nombre para este nuevo operador!

No hay que asustarse porque no es para tanto.

Lo utilizaremos cuando queramos comprobar si existe algo y devolver un valor por defecto en el caso de que no sea cierto.

Devuelve el resultado del primer operando si existe y no es nulo. Devolverá el segundo operando en cualquier otro caso.

Declaraciones precisas

Ahora disponemos de nuevos tipos para controlar el envío de datos a una función. Estos tipos son: int, bool, float y string.

Lo que quiere decir que podremos validar si el parámetro es un número entero, un booleano, un número decimal o una cadena.

Clases anónimas

Con PHP 7 podremos crear clases anónimas. Qué es esto? Pues no es otra cosa que podremos crear clases sin nombre, definidas en la misma línea de código donde creamos el objeto de la clase.

Esta característica ya existía en lenguajes como C# y Java.

En cuanto a la sintaxis es igual que las clases habituales de PHP lo que pasa es que no escribimos el nombre.

La buena utilización de las clases anónimas puede mejorar el tiempo de ejecución del proyecto web.

var_dump(new class($i) {
   public function __construct($i) {
       $this->i = $i;
   }
});

Un poco de limpieza

PHP 7 ha liberado espacio para permitir la mejora del rendimiento y para esto se ha deshecho de algunas funcionalidades que ya no se utilizaban y algunas APIs antiguas no estaban obsoletas y no eran compatibles con la mayoría de servidores.

Seguramente todo lo que se ha eliminado no lo usabas pero de todas formas hay que tener especial cuidado si actualizamos a PHP 7 desde una versión muy antigua de PHP.

Y muchos más cambios que nos harán la vida del programador más llevadera o eso espero yo por mi parte.

De todas formas, vamos a ver qué tal se porta a partir de ahora.

Soporte de CMSs

  • Drupal 8 soporta PHP 7.
  • Drupal 7 soporta PHP 7.
  • WordPress 4.3.1 soporta PHP 7.
  • Joomla 3.4.5 soporta PHP 7.
  • Joomla 3.5 soporta PHP 7.

Y para terminar este post comentar que he visto por la web en algún sitio que la mejora de rendimiento de WordPress con PHP 7 es del 129%. Impresionante!!

Bueno, como yo soy un poco segurolas, esto habrá que verlo y experimientarlo.

Espero que este post os haya sido de ayuda u os haya aclarado algunas dudas sobre la nueva versión de PHP.

¿A qué esperas para escribir código?

Ir al contenido