Un ejemplo del uso de condicionales en WordPress

Abril 2016: Post recuperado de Aprendiendo PHP (web ya inactiva)
Valencia, 15/07/2013, G.B.
Vamos a ver un pequeño ejemplo del uso de las instrucciones condicionales en PHP aplicadas al (maravilloso) gestor de contenidos WordPress.

En este caso, vamos a mostrar un determinado mensaje o elemento en determinadas páginas de nuestro blog en WordPress. Para ello, utilizaremos una sentencias If que ya conocemos y haremos que se muestre el código que decidamos, como por ejemplo un mensaje o un ‘trozo’ de código HTML, en la barra lateral de nuestro blog (archivo sidebar.php) siempre y cuando no sea la página principal. Como ejemplo sencillo, vamos a crear un texto en H2 en nuestra barra lateral que contenga lo siguiente:

Esto solo se muestra en el sidebar si no es la página principal

Tendremos que modificar nuestro archivo sidebar.php. El código, que añadiremos es muy sencillo:

<?php if (!(is_home() )) { ?>
<h2> Esto solo se muestra en el sidebar si no es la página principal</h2>
<?php } ?>

 Para más información al respecto, visita el Codex de WordPress: http://codex.wordpress.org/Conditional_Tags

Un ejemplo del uso de condicionales en WordPress

Valencia, 15/07/2013, G.B.
Vamos a ver un pequeño ejemplo del uso de las instrucciones condicionales en PHP aplicadas al (maravilloso) gestor de contenidos WordPress.

En este caso, vamos a mostrar un determinado mensaje o elemento en determinadas páginas de nuestro blog en WordPress. Para ello, utilizaremos una sentencias If que ya conocemos y haremos que se muestre el código que decidamos, como por ejemplo un mensaje o un ‘trozo’ de código HTML, en la barra lateral de nuestro blog (archivo sidebar.php) siempre y cuando no sea la página principal.

Como ejemplo sencillo, vamos a crear un texto en H2 en nuestra barra lateral que contenga lo siguiente:

Esto solo se muestra en el sidebar si no es la página principal

Tendremos que modificar nuestro archivo sidebar.php. El código, que añadiremos es muy sencillo:

<?php if (!(is_home() )) { ?>
<h2> Esto solo se muestra en el sidebar si no es la página principal</h2>
<?php } ?>

 Para más información al respecto, visita el Codex de WordPress: http://codex.wordpress.org/Conditional_Tags

Averiguar la versión de PHP de tu servidor web

Otro post para ayudar al re-arranque de Aprendiendo PHP…

Valencia, 13/07/2013, G.B.
Bueno, aquí va otro post para poner de nuevo ‘en el mapa’ a Aprendiendo PHP… En este caso se trata de algo de lo que ya hemos hablado, aunque todavía no había puesto un ejemplo práctico. Se trata de averiguar la versión de PHP de tu servidor (así como otros parámetros…), para poder ajustar tu código a la misma. Para ello, simplemente debemos crear un archivo .php con un pequeño código PHP y subirlo a nuestro servidor. El código del archivo  PHP es el siguiente:

<?php
phpinfo();
?>

 Yo he creado una página .ph p con ese código y la he subido al directorio raíz de mi sitio, de mi hosting. Al escribir la URL http://www.aprendiendophp.nes/phpInfo.php obtendré una página interpretada que me mostrará la versión de PHP qu utiliza mi servidor.

Haced la prueba y podréis comprobarlo por vosotros mismos. Hasta pronto!

Iniciando el tema de Smarty

Iniciando el tema de SmartyQuiero iniciar una sección en este blog de INDAGA,net sobre la tecnología Smarty, utilizada en varios y conocidos CMS o gestores de contenidos como Joomla!, PHPLD (como el directorio de INDAGA.net) y PrestaShop, por poner solo algunos ejemplos significativos (y que yo tengo que trastear, quiera o no). El sitio oficial de Smarty es www.smarty.net.

¿Y qué es Smarty? Smarty es un Template Engine, una librería que nos permite separar el diseño del código en nuestra página web, algo esencial para hacerla mucho más flexible, potente y fácil de mantener. También podemos describirlo como un motor compilador de plantillas para PHP. Obviamente,  para poder usar la tecnología Smarty es necesario que nuestro servidor web soporte el lenguaje de script PHP. La inmensa mayoría de los hosting webs actuales soportan PHP y MySQL bajo el servidor de código libre Apache, así que tranquilos. La extensión de los archivos de Smarty es .tpl, abreviatura o acrónimo de Template Library.

Si instalamos algún gestor de contenidos como los anteriormente mencionados, Smarty ya estaré listo para ser utilizado. Pero si quisiéramos utilizarlo sin un gestor de contenidos en el cual ya está incluido, podríamos hacerlo perfectamente descargando la librería de Smarty de forma gratuita en la siguiente dirección: www.smarty.net/download.

El manual oficial de Smarty en castellano lo tenéis en la siguiente dirección: www.smarty.net/docsv2/es y una lectura que os recomiendo para empezar a conocer a Smarty es la siguiente: Tutorial introducción a Smarty.

Por mi parte, iré tratando el tema de Smarty en este mismo blog, ya que lo necesito tanto para el directorio de enlaces como para futuras webs. Además, el saber no ocupa lugar, al menos eso dicen…

Instrucciones iterativas en PHP (II): bucles Foreach (I)

Estructuras de control de flujo en PHP

 

Valencia, 25/10/2012, G.B.
La siguiente instrucción iterativa en PHP que vamos a ver es el bucle foreach. Foreach nos permite iterar o ‘enunciar’ cada elemento de una matriz, vectorarray. En otras palabras, nos permite ‘recorrer’ todos los datos de una matriz, array o vector.

 

La diferencia entre el bucle For y el bucle Foreach es que cuando se utiliza el bucle foreach se ejecuta todo lo que está escrito en la instrucción iterativa, sin tener en cuenta ningún contador. En cambio, al utilizar el bucle for, se realizan las instrucciones un determinado número de veces, dependiendo del contador: «hazlo X veces».  Así, en las instrucciones foreach no se pueden producir errores, siempre y cuando estén bien escritas, claro.

El bucle foreach tiene dos usos:
1) Mostrar todos los datos de un array
2) Mostrar un valor concreto del array

La sintáxis de foreach del primer uso (1), para recorrer y mostrar todos los datos de la matriz o  array es:

identificador de la matriz o vector; expresión con el operador ‘as’; variable que identifica cada uno de los elementos de la matriz; sentencias o instrucciones a realizar:

O lo que es lo mismo: 

foreach (array as $valor) {
instrucción;
}

Veámoslo con un sencillo ejemplo que recorre todos los valores de la matriz o array y los imprime con la instrucción echo, añadiendo un salto de línea en HTML (<br />) tras cada uno de los elementos recorridos y mostrados de la matriz $colores:

<?php
$colores = array("blanco", "azul", "verde manzana", "salmón");
foreach ($colores as $pintura) {
echo "Color: <b>$pintura</b><br />";
}
?>

Ejecutar ejemplo

El segundo uso de foreach (2) es para mostrar un determinado valor de la matriz. Pero será en el próximo post, y con más ejemplos…

 

Lecturas recomendadas:
foreach (PHP Manual)
Foreach PHP

Instrucciones iterativas en PHP: bucles For

php

Estructuras de control de flujo en PHP

Valencia, 02/10/2012
El lenguaje PHP dispone también de un tipo instrucciones llamadas iterativas o de repetición ‘heredadas’  del lenguaje C. Son los conocidos ‘bucles‘, instrucciones que realizan una determinada acción un número determinado de veces que se especifica a través de un contador. Es como si diéramos cuerda a una instrucción para que se realice hasta que finalice el contador que hemos especificado, el ‘paso’, por llamarlo de algún modo. Se llaman bucles porque se repiten hasta que la condición deja de cumplirse, o lo que es lo mismo, se evalúa como falsa (FALSE).

Las instrucciones iterativas o bucles en PHP son las siguientes:

    • for
    • foreach
    • while
    • do… while

Veamos la primera de ellas, las  instrucciones o bucles for. Su sintaxis es la siguiente:

for ([Inicialización de la variable] ; [Condición] ; [Incremento o decremento de la variable])
{
[Instrucciones];
}

O como lo explica el portal oficial PHP.net:

for (expr1; expr2; expr3) sentencia

Veamos algunos ejemplos prácticos para entenderlo mejor:

<?php
/* ejemplo sencillo de bucle for en PHP */
for ($n = 1; $n <= 10; $n++)
{ 
echo "$n <br />";
//añadimos un salto de línea en HTML (<br />)
}
?>

 Lo muestro también con otro formato de visualización: 

<?php
/* ejemplo sencillo de bucle for en PHP */
for ($n = 1; $n <= 10; $n++) {
    echo «$n <br />»; //añadimos un salto de línea en HTML (<br />)
}
?>
Ejecutar ejemplo

EXPLICACIÓN del ejemplo: En primer lugar hemos inicializado la variable $n y le hemos dado el valor 1.Esto sólo se realizará la primera vez.  En segundo lugar, hemos establecido la condición, que la variable $n sea menor de 15 para que se realice la instrucción o sentencia que veremos al final . En  tercer lugar, hemos establecido el ‘paso’ -incremento o decremento- de la variable cada vez que ‘dé una vuelta’, es decir, cada vez que acabe y vuelva a la condición para evaluarla ($n <= 10;). En nuestro ejemplo, ha sido con un incremento de +1 a través del operador de incremento ($n++). Por último, y entre brackets, hemos especificado cuál es la instrucción que debe realizar e bucle for (echo $n;) mientras se cumpla la condición -sea verdadera o TRUE) ($n <= 10;) y con qué incremento ($n++),  $n+1 en nuestro caso. La instrucción for finaliza en cuanto la condición se evalúa como falsa (FALSE): en nuestro primer  ejemplo, en cuanto la variable $n alcanza el valor de 10.


NOTA:
Os debo unos cuantos ejemplos más.  En breve, prometido…

Lecturas recomendadas:
Definición de iteración
Estructura for
Estructuras control PHP

Estructuras de control en PHP IV: el operador ternario

[Control de flujo o estructuras de control en PHP VI] Operador Ternario

Valencia, 28/09/2012, G.B.
Como os comenté en el anterior post, para finalizar con las instrucciones condicionales en PHP, vamos a conocer ahora el denominado  operador ternario. En realidad, no es una nueva clase de instrucción condicinal, sino una forma distinta de representar las instrucciones condicionales if/else, pero utilizando menos  líneas de código, por decirlo de algún modo.

Toma el nombre de ternario porque utiliza 3 argumentos; tiene tres partes definidas: (PARTE1) ? (PARTE2) : (PARTE3);

    • La primera parte es la condición o expresión que incluye la variable
    • La segunda el resultado de esa condición o expresión si el valor de la variable es verdadero (TRUE), cuando la condición se cumple
    • La tercera parte es el valor o expresión si el resultado es falso (FALSE), cuando no se cumple la condición

Sintaxis del operador ternario:

$NombreVariable = (condición) ? sentencia1-cuando-se-cumple : sentencia2-cuando-no-se-cumple;
Si utilizamos alguna instrucción o expresión como por ejemplo echo, la sintaxis sería:
echo ($NombreVariable = (condición)) ? sentencia1-cuando-se-cumple : sentencia2-cuando-no-se-cumple;

Otra forma de representarlo sería como lo hace la Wikipedia (añadiendo el punto y coma final de la expresión):

expresión boleana ? valor si cierto : valor si falso;
ó
variable = condición ? valor si es cierto : valor si es falso;

 Como podemos observar se constituye de (PARTE1) ? (PARTE2) : (PARTE3); que significa (CONDICIÓN) ? (RESULTADO1) : (RESULTADO2); También podemos representarlo así:
INSTRUCCIÓN (CONDICIÓN) ? (RESULTADO-SI-SE-CUMPLE) : (RESULTADO-SI-NO-SE-CUMPLE);

Vamos a verlo con un ejemplo. Primero escribiremos la instrucción condicional utilizando la estructura if/else que ya conocemos. En segundo lugar, la reescribiremos utilizando la sintaxis del operador ternario. El ejemplo, muy sencillo, nos mostrará el mensaje «Son las 7 y cuarto de la mañana, hora de levantarse!!«, si son las 7:15 horas de la mañana (TRUE) y el mensaje «Estoy aprendiendo PHP, poco a poco.» , si lo ejecutamos a cualquier otra hora del día, es decir, si la condición es falsa ya que el valor de la variable  es distinto (FALSE):

Primero, la instrucción if/else que ya conocemos:

<?php $hora = date ('H:i');
// formato de hora y minutos en PHP
if ($hora == ('7:15'))
{
echo 'Son las 7 y cuarto de la mañana, hora de levantarse!!';
}
else
{
echo
'Estoy aprendiendo PHP, poco a poco!';
}
?>

Ejecutar ejemplo

Y ahora lo mismo utilizando el operador ternario:

<?php
$hora = date ('H:i');
echo ($hora == ('7:15')) ? 'Son las 7 y cuarto de la mañana, hora de levantarse!!' : 'Estoy aprendiendo PHP, poco a poco!';
?>

Ejecutar ejemplo

El resultado será exactamente el mismo. Tened en cuenta que echo no necesita paréntesis, ya que no es una función, sino una sentencia del lenguaje.

Con esto finalizamos las instrucciones condicionales o de control de flujo en PHP. Lo siguiente que veremos serán las instrucciones de iteracción o bucles. De todas formas, las seguiremos utilizando en los próximos ejemplos.

Lecturas recomendadas:
El operador ternario en PHP (webtaller.com)
Operador terciario (Wikipedia)
Operadores de comparación en PHP

Estructuras de control en PHP V: instrucción switch

php

[Control de flujo o estructuras de control en PHP V] Instrucciones Switch

Valencia, 27/09/2012, G.B.
Tras haber conocido ya las estructuras condicionales en PHP con if, if/else y if/elseif/else, pasamos ya a la última: la estructura switchYa sabemos que las sentencias o estructuras condicionales se utilizan para realizar distintas acciones basadas en diferentes condiciones. Switch actúa de la misma manera que lo hace la estructura if/elseif/else, pero permite simplificar el código cuando las condiciones o posibilidades son muchas.

La expresión o variable que va después de la palabra reservada switch se evalúa utilizando la palabra case (caso en inglés) seguida de dos puntos. Si hay un equivalente, una coincidencia, se ejecutará la sentencia tras ‘case‘. En caso contrario, se sale de la instrucción utilizando la palabra reservada break y se pasa al siguiente ‘caso’ o case, en donde se evaluará la siguiente sentencia,  y así hasta llegar a un case en el que se cumpla.  En el caso de que no se cumple ninguna de las equivalencias presentadas tras cada uno de los ‘case’, es decir, en el caso de que no haya ninguna equivalencia, se puede utilizar una instrucción por defecto representada por la palabra default, también  seguida de dos puntos. La estructura condicional switch está ‘encerrada’ entre brackets { }.

Pero mejor veamos una representación de la sintaxis de switch:

switch ($nombreVariable) {
case valor1:
      (sentencia1);
      break; // salida que se utiliza opcionalmente
case valor2:
      (sentencia2);
      break;
case valor3:
      (sentencia3);
      break;
case valor4:
      (sentencia4);
      break;
case valor5:
      (sentencia5);
      break;
defaulf:
      (sentencia o instrucción predeterminada); // esta se ejecutará en caso de que ninguna de las equivalencias anteriores se cumpla
}

Resumiéndolo:

switch (variable) {
   case: sentencia1;
   break; 
case: sentencia2;
   break; 
default: sentencia predeterminada;

Para entenderlo mejor, vamos a adaptar el ejemplo del post anterior a la estructura switch, aumentando con esa instrucción las posibilidades:

<?php
$hora = date ('H');
switch ($hora) {
   case 7:
   echo 'Es hora de levantarse, campeón';
   break; // salida que se utiliza opcionalmente
case 8:
   echo '¿Estás despierto ya?';
   break;
case 10:
   echo '¿Un cafetito?';
   break;
case 13:
   echo 'Falta menos para comer. ¿Tienes hambre ya?';
   break;
case 14:
   echo 'A comer!';
   break;
case 16:
   echo '¿Te apetece otro café?';
   break;
case 19:
   echo 'Descansa un poco: apaga el ordenador.';
   break;
case 20:
   echo 'Queda menos para cenar. ¿Tienes hambre?';
   break;
case 23:
   echo 'El día ya casi ha pasado. Debes estar cansado';
   break;
case 24:
   echo '¿Por qué no te vas a dormir?';
   break;
default:
   echo '<h2>Bienvenido a Aprendiendo PHP</h2>'; /* Esta es la frase por defecto que aparecerá en formato Título 2 en el caso de que no se cumpla ninguna de las equivalencias presentadas */
   break; 
}
?>

Ejecutar ejemplo

Ya sólo nos queda  ver -respecto a las estructuras condicionales en PHP- otro tipo de operador condicional que equivale a la estructura if/else denominado operador ternario. En el próximo post…


Lecturas recomendadas:
Switch
PHP Instrucción Switch
PHP Switch Statement

Estructuras condicionales en PHP IV: If… elseif… else

Abril 2016: Post recuperado de Aprendiendo PHP (web ya inactiva)
[Control de flujo o estructuras de control en PHP IV] Instrucciones IF/Elseif/Else

Valencia, 24/09/2012, G.B.
Tras las estructuras condicionales o de control de flujo if y if… else, ahora toca el turno a la siguiente: if… elseif… else. Con elseif añadimos más posibilidades, más alternativas.

Elseif (también escrito else if, aunque menos frecuentemente) es una combinación de if y else y una ampliación de if. Si la condición contenida en el if es falsa (FALSE, que no se cumple), entonces el control de flujo saltará al primer elseif. Si éste tampoco se cumple, pasaría al siguiente, hasta llegar a un elseif en que la condición sí se cumpliera, que fuera verdadera (TRUE). En el caso de que no se cumpliera ninguno de los elseif, pasaríamos por último al else para ejecutar las sentencias contenidas en el mismo.

Como observamos, las estructuras elseif pueden anidarse, es decir, ir abriendo distintas posibilidades si no se cumplen las anteriores. La sintaxis es la siguiente:

if (condición1) {
sentencia1; // Si esto no se cumple, saltamos al primer elseif
}

elseif (condición2) {
sentencia2;
}
 // Tras esta línea pueden ir anidados más elseif
else {
sentencia3; // Si ninguno de los elseif se han cumplido, se ejecutará estas sentencias
}

En caso de que la primera condición, la del if, no se cumpla, pasamos al primer elseif. Si este tampoco se cumple, pasaríamos al siguiente, hasta llegar al else, en caso de que no se cumpliera ninguno de ellos. Veamos un pequeño ejemplo:
<?php
$numero1 = '2';
$numero2 = '3';
$numero3 = '4';
$numero4 = '2';
if ($numero1 == $numero2) {
print "El $numero1 es igual al $numero2.";
}
elseif ($numero2 == $numero3) {
print "El $numero2 es igual al $numero3";
}
elseif ($nunero3 == $nunero4) {
print "El $numero3 es igual al $numero3";
}
else {
print "El $numero1 es igual al $numero4.
¿Lógico, no?";
}
?>


Ejecutar ejemplo

Otro ejemplo tonto, lo sé, pero espero que  explicativo.  También podemos ampliar el ejemplo que hemos utilizado en los anteriores posts sobre las estructuras condicionales, especificando franjas horarias más pequeñas:

<?php
$hora = date (“H”);
if ($hora == ('7') or $hora < ('8')){
echo 'Es hora de levantarse, campeón';
}
elseif ($hora == ('14')){
echo '¿Qué vas a comer hoy?';
}
elseif ($hora <= ('16')){
echo '¿Demasiado tarde para comer, ¿no crees?';
}
elseif ($hora <= ('20')){
echo 'No, todavía no es hora de cenar';
}
elseif ($hora == ('21') or $hora <= ('22')){
echo 'Ve pensando en lo que vas a cenar, si tienes hambre, claro';
elseif ($hora == ('23')){
echo 'Demasiado tarde para cenar, ¿no crees?'; /
}
elseif ($hora == ('1') or $hora <= ('2')){
echo 'Si no te has ido a dormir todavía, deberías hacerlo!';
}
else
echo 'Bienvenido';
?>

Ejecutar ejemplo 2

Por último, comentaros que puede ser realmente engorroso tener que contemplar todas las posibilidades y así estar ‘obligados’ a utilizar un montón de elseif anidados. Este último ejemplo se puede hacer de una forma mucho mejor  y más cómoda (sin tener en cuenta los posibles fallos de cálculo entre las franjas horarias que yo haya podido cometer al hacerlo…). Para ello, disponemos de la estructura switch, la cual es más sencilla de escribir (ahorramos líneas de código y conseguimos el mismo resultado que con if/elseif/else) y que veremos en el siguiente post. Hasta pronto!


Lecturas recomendadas:

elseif (PHP.net)
Elseif (gratismil.com)

Estructuras condicionales en PHP III: if…else

 Abril 2016: Post recuperado de Aprendiendo PHP (web ya inactiva)
[Control de flujo o estructuras de control en PHP III] Instrucciones IF/Else

Valencia, 23/09/2012, G.B.
Como hemos visto en el anterior post sobre instrucciones If sencillas, esta estructura condicional puede que no nos sea suficiente para lograr nuestro objetivo. Así, en el ejemplo anterior, se muestra un mensaje si abrimos la página después de las 07:00 a.m. (después de las siete de la mañana). ¿Y si queremos ajustar más el margen y mostrar mensajes distintos en franjas horarias distintas,  más ‘pequeñas’? Pues que entonces tendremos que utilizar alguna de las tres construcciones o estructuras condicionales siguientes: if/else; if/elseif/else; switch. Vamos a ver ahora las estructuras condicionales if…else en PHP.

El bloque if/else es una decisión en dos direcciones. Si la expresión o condición if es verdadera (TRUE), se ejecutará el bloque se sentencias o expresiones. Si la expresión o condición es falsa (FALSE), se ejecutará en su lugar las sentencias o expresiones del bloque else. La sintaxis es la siguiente:

if (expresión)
{

   sentencias1;
}
   else {
   sentencias2;
}

Recordad que cada bloque debe ir siempre encerrado entre brackets, apertura y cierre { }. Veámoslo con este sencillo (y naive) ejemplo:

<?php
$hora = date (“H”);
if ($hora == (‘7’))
{
echo ‘<h2>Es hora de levantarse, campeón</h2>’; // Si son las 7 de la mañana, se mostrará este mensaje en Título2 (H2)
}
else {
echo ‘<b>Aún no son las 7, aprovecha!</b>’; // Si todavía no son las 7 de la mañana, se mostrará este otro mensaje en negrita
}
?>

Ver el ejemplo

Bien, pero todavía podemos afinar mucho más para que este código sea útil ¿verdad? Lo veremos con las sentencias if/elseif/else y switch. Cuando  hallamos visto todas las estructuras condicionales, utilizaremos ejemplos más interesantes, más útiles. Hasta muy pronto!

Lecturas recomendadas:else (PHP.net)
Estructura if-else en PHP (documentoweb.com)
Sentencia if y else en PHP (codigoprogramacion.com)

entre muchas más…