0% encontró este documento útil (0 votos)
68 vistas32 páginas

Introducción a PHP: Conceptos Básicos

PHP para principiantes

Cargado por

SusAlmogavar
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
68 vistas32 páginas

Introducción a PHP: Conceptos Básicos

PHP para principiantes

Cargado por

SusAlmogavar
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 32

Introducción a PHP.

Conceptos Básicos
Índice
1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. ¿Qué es PHP? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Requisitos de PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1. Manual de instalación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2. Fundamentos de PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1. Sintaxis básica de PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1. Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2. Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.1. Tipo numérico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.2. Cadena de Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.3. Booleanos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2.4. Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3. Variables y constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

4. Operadores en PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.1. Operadores aritméticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.2. Operadores de comparación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.3. Operadores lógicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.4. Operadores de asignación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

5. Estructuras de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.1. Sentencias condicionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.2. Bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

6. Funciones en PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

7. Funciones y librerı́as comunes en PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19


7.1. Funciones de tratamiento de cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
7.2. Manipulación de arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
7.3. Manejo de ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
7.4. Funciones de fecha y hora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
7.5. Bonus track: lectura de un CSV y muestra en una tabla HTML . . . . . . . . . . . . . . . . . . . . . 25

8. Aplicaciones prácticas en WordPress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27


8.1. Enviar un email a otra cuenta de correo cuando nos dejan un comentario . . . . . . . . . . . . . . . 27
8.2. Notificar en un canal de Telegram cuando subas un post nuevo . . . . . . . . . . . . . . . . . . . . . 28

9. La verdadera potencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

10.Recursos y Herramientas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

2
Índice

1 Introducción
En este microbook vamos a ver qué es PHP y lo importante que es su uso en el desarrollo web. Intentaré que la
curva de aprendizaje sea lo más suave posible y que haya ejemplos visuales y prácticos de cada concepto.

Te aconsejo que, junto a este documento, tengas siempre el ordenador encendido y vayas probando los casos de
forma práctica. Bajo mi criterio, es la mejor forma de aprender e interiorizar los conceptos.

Por cierto, este microbook forma parte de una serie de libros para aprender fundamentos de desarrollo y código
web. En concreto, este es el tercero. Si quieres el primero puedes adquirirlo aquı́ por un precio simbólico de 5
dólares. Es un manual de conceptos básicos de HTML. Todos mis libros están gratuitos unos dı́as y luego pasan a
costar un precio simbólico.
El segundo es un manual de introducción a CSS y puedes adquirirlo aquı́ también por el mismo precio de 5
dólares.

Una vez terminada esta pesada introducción vamos con el lı́o. ¡Aprendamos conceptos básicos de PHP!

1.1 ¿Qué es PHP?


PHP es un lenguaje de programación abierto creado en 1994 por Rasmus Lerdorf. Desde su creación se ha
venido utilizando ampliamente en el desarrollo web debido a sus caracterı́sticas:

Integración con lenguajes web: La caracterı́stica más interesante para nosotros es que PHP se integra
con el código HTML, CSS y JavaScript, ası́ que podemos crear plantillas que cambien ciertos datos de forma
programática sin tener que repetir varias veces el contenido HTML.
Ejecución en el servidor: PHP se ejecuta en el servidor, lo que es muy interesante para evitar carga
computacional al cliente, que puede ser un teléfono móvil con poca capacidad.
Sintaxis sencilla: La sintaxis de PHP es muy fácil de aprender y escribir. Sobre todo para gente que esté
acostumbrada a lenguajes de programación como C o Java. En cualquier caso, si tu primera experiencia con
la programación es con PHP, los fundamentos que aprendas te servirán para otros lenguajes.
Compatibilidad con servidores web: Los servidores web más comunes en el mundo de los nichos son
Apache y Nginx. Ambos soportan PHP de forma nativa.
Código abierto y comunidad: La comunidad de usuarios de PHP es gigantesca. Esto ha permitido la
creación de grupos, canales, listas de correo y webs como StackOverflow con gente dispuesta a ayudar y
colaborar.
Funciones integradas adaptadas a la web: PHP contiene un sinfı́n de funciones y librerı́as (código ya
escrito y listo para usar) adaptadas a la web. Esto simplifica muchı́simo la tarea de desarrollo y la hace mucho
más cómoda.

1.2 Requisitos de PHP


Para que nuestro navegador pueda interpretar código PHP y procesarlo, han de cumplirse ciertos requisitos
fundamentales:
Servidor web: Un servidor web es el programa que nos permitirá renderizar el código web cuando tienen
código PHP incrustado. Los más comunes son Apache y Nginx, aunque en algunos entornos también se usa
Microsoft IIS.
Módulos y extensiones: Necesarios para utilizar librerı́as y código PHP ya hecho que nos permita aprovechar
al máximo la funcionalidad. Algunas de estas (pero no todas) son:
• mysqli: Clásica librerı́a de conexión con bases de datos MySQL.

3
• json: Librerı́a para tratar con datos en formato JSON. Muy necesaria si trabajamos con APIs.
• gd o imagick: Librerı́a para el tratamiento de imágenes. Yo la tuve que instalar para crear mi herra-
mienta de transformación de jpg a webp.

No nos vamos a detener en los requisitos de Hardware, ya que cualquier PC de hoy en dı́a, por muy viejo que
sea, podrá ser capaz de correr un entorno web y código PHP.

1.2.1 Manual de instalación


Existen muchı́simos tutoriales en internet para instalar un entorno PHP. Yo siempre recomiendo XAMPP en
Windows porque se puede hacer todo a golpe de clic. Voy a dejar un par de tutoriales y vı́deos para que los sigas y
aprendas a manejar el entorno.
Tutorial muy bueno de XAMPP: Que puedes encontrar aquı́. Recomiendo instalar también la parte de
bases de datos (tal y como explica) para el futuro.
Cómo instalar y configurar XAMPP: Esta vez en formato vı́deo, para Windows. También recomiendo
que lo veas aunque hayas seguido el otro porque habla del directorio htdocs que es donde se van a subir los
ficheros para probar. Aquı́ el vı́deo.
Cómo instalar XAMPP en MAC: Por si eres usuario de la manzana mordida. Aquı́ un vı́deo.

4
2 Fundamentos de PHP
Bien, ahora que ya tenemos PHP instalado y listo vamos a empezar a aprender fundamentos sobre sintaxis,
variables, estructuras de control, operadores y funciones. Pero no te asustes, que todo irá bien explicadito
y con ejemplos para que los hagas en tu propio ordenador.

2.1 Sintaxis básica de PHP


Para escribir nuestros propios scripts en PHP debemos tener en cuenta dos reglas fundamentales:

El código debe estar incluido entre las etiquetas de apertura y de cierre

<?php //apertura
//código PHP
?> //cierre

Después de cada instrucción, debemos poner un punto y coma para delimitarla (;)

echo "Hola, Mundo"; // echo muestra por pantalla el contenido

Bien, pues con esto ya podemos escribir nuestro primer programa web en PHP, un clásico Hola Mundo de
toda la vida.

<?php
echo "Hola, Mundo";
?>

Para que funcione y poder probarlo, debes crear un fichero con extensión .php (por ejemplo holamundo.php) en
el directorio de tu servidor web (si usas XAMPP este será htdocs). Una vez esté creado y guardado con este código
puedes ir a http://localhost/holamundo.php y verás algo como esto:

NOTA: para hacer estos scripts te recomiendo usar un editor algo más avanzado que un simple notepad. Puedes
echar un vistazo a Visual Studio, Atom o Sublime.

2.1.1 Comentarios
Los comentarios son partes del código que no se interpretan, sino que se dejan como explicación para la persona
que esté trabajando con el código. Los hay de dos tipos: de una lı́nea o de varias lı́neas:
De una lı́nea: Se delimitan con dos barras o con una almohadilla y abarcan tan solo una lı́nea de código.

5
De varias lı́neas: Se empiezan con una barra y un asterisco y se cierran con un asterisco y una barra. El
texto que haya contenido entre la secuencia de apertura y la de cierre no se interpretará ni aparecerá visible
en el navegador.

<?php
// Esto es un comentario de una sola lı́nea
# Este también es un comentario de una sola lı́nea
echo "¡Hola, mundo!";
/*
Esto es un comentario de varias lı́neas.
Puedo seguir escribiendo y no se procesará.
*/
?>

2.2 Tipos de datos


PHP trabaja con varios tipos de datos simples que nos van a ayudar a procesar y trabajar con la información.
En este tutorial veremos los siguientes tipos: numérico, booleano, cadena de texto y array. Estos datos se pueden
almacenar en variables que nombraremos usando el caracter $ seguido del nombre que queramos darle. Tras esto,
podemos poner el signo igual (=) y darles un valor. Veamos ejemplos para cada uno de ellos:

2.2.1 Tipo numérico


Se utiliza para trabajar con números. Tras almacenar el número en una variable podemos hacer operaciones
aritméticas con él (sumas, restas, multiplicaciones, etc). Existen funciones que nos permiten hacer operaciones
complejas como potencias o raı́ces cuadradas y muchas otras. Vamos a probar con un ejemplo:
<?php
$precio = 25; //creamos una variable numérica con valor 25.
$nuevoPrecio = $precio * 0.8; //el nuevo precio es el 80% del valor de precio.
echo $nuevoPrecio; //mostramos el valor de nuevoPrecio por consola
?>

Si pruebas a poner ese código en tu fichero holamundo.php (que puedes renombrar como quieras), guardas y
refrescas el navegador donde lo estabas viendo, verás que ahora aparece un 20 en la pantalla, que es el resultado
de multiplicar 25x0,8. Te animo a que pruebes muchas más operaciones y juegues con los números y las variables.
Puedes hacer otras operaciones como divisiones (/), sumas (+), restas (-), o la operación módulo ( %) que ofrece
como resultado el resto de la división de ambos números.

2.2.2 Cadena de Texto


Las cadenas de texto o strings son una herramienta fundamental para nosotros, ya que nos van a permitir
mostrar el texto que queramos en nuestra web. Lo más importante que hay que saber en primera instancia es que
para definirlas hay que usar comillas simples o dobles (por eso en el ejemplo del Hola Mundo está escrito entre
comillas). Veamos un ejemplo:

<?php
$nombre = "Aprendiz";//define una variable con el texto "Aprendiz".
?>

Existen un montón de posibilidades de tratamiento de cadenas. En la sección de funciones más adelante veremos
muchas funcionalidades, pero en este momento podemos ver la concatenación, que serı́a una especie de suma de
strings, es decir, poner una a continuación de la otra.

6
Para concatenar dos cadenas de texto se utiliza el operador . (punto). Puedes concatenar variables con cadenas
de texto plano o variables con variables. Mira estos ejemplos:
<?php
$nombre = "Aprendiz";
$apellido = "De SEO";
echo $nombre." ".$apellido; //juntamos la primera con un espacio y con la segunda
//salida "Aprendiz de SEO";
?>

<?php
$nombre = "Aprendiz";
echo $nombre." De SEO"; //juntamos la primera con otra cadena "a pelo"
//salida "Aprendiz de SEO";
?>

<?php
$nombre = "Aprendiz";
$apellido = "De SEO";
echo "¡Hola, ".$nombre." ".$apellido."!";
//salida "¡Hola, Aprendiz de SEO!";
?>

2.2.3 Booleanos
Los booleanos definen dos posibles estados: true (verdadero) o false (falso). Normalmente se utilizan para hacer
comprobaciones en funciones if, que veremos más adelante. Si haces un echo, se representa 1 como verdadero y
(espacio en blanco) como falso.
<?php
$numero1 = 10;
$numero2 = 5;
$esMayor = $numero1 > $numero2; // $esMayor será true
echo $esMayor; //SALIDA: 1
?>
<?php
$numero1 = 10;
$numero2 = 5;
$esMayor = $numero1 < $numero2; // $esMayor será true
echo $esMayor; //SALIDA:
?>

2.2.4 Arrays
Los arrays o arreglos o vectores son listas de elementos agrupados. Lo interesante es que, en esta agrupación,
cada uno tiene una posición. Puedes imaginarlo como una carretera en la que hay una fila de coches. El coche que
va en la posición 0, en la 1, en la 2, etc. Podemos echar un vistazo a sus caracterı́sticas:
Definición: Se utilizan los corchetes para definir el contenido de un array. Además, los elementos agrupados
se separan por comas. Puedes tener arrays de números, cadenas de texto y de muchas otras cosas (incluso de
otros arrays).

<?php
$frutas = ["manzana", "banana", "pera"];
//define un array con 3 elementos de tipo string
?>

7
Acceso: Para acceder a un elemento de un array tenemos que poner el nombre del array (recuerda, con el
sı́mbolo $) y, entre corchetes, poner su posición. Por eso te comenté anteriormente el ejemplo de los coches.
La posición también se suele llamar ı́ndice y siempre empieza en la posición 0.

<?php
$frutas = ["manzana", "banana", "pera"];
echo $frutas[0]; // SALIDA: manzana
?>

Tipos: Tenemos por un lado los arrays indexados, que son los que ya conoces. Este tipo de arrays se
identifican con un ı́ndice numérico. Por otro lado están los arrays asociativos. En este otro tipo, el ı́ndice
no es el único atributo a tener en cuenta, sino que los datos se organizan en pares clave-valor. Es decir,
funciona como un diccionario.

<?php
//definimos un usuario con distintos atributos
$usuario = [
"nombre" => "Ana",
"apellido" => "Garcı́a",
"edad" => 45
];
//si queremos acceder a cualquiera de ellos, ponemos $usuario[’atributo’]
echo $usuario[’apellido’]; //SALIDA: Garcı́a.
?>

Agregación: Para agregar datos al array, ponemos el nombre del array, seguido de un corchete de apertura
y otro de cerrado, un igual, y ya el valor que queremos asignar. Este elemento se añadirá al final del array.

<?php
//primero definimos el array con solo 2 componentes
$fruta = ["manzana", "pera"];
echo $fruta[2]; // pedimos que nos saque por pantalla el 3º, que no existe.
//SALIDA ;
?>

Ahora agregamos un nuevo elemento al listado:

<?php
//definimos el array con 2 componentes
$fruta = ["manzana", "pera"];
$fruta[] = "sandı́a"; // a~
nadimos un nuevo elemento
echo $fruta[2]; // pedimos que nos saque por pantalla el 3º, que ya existe.
//SALIDA sandı́a;
?>

Eliminación: Para eliminar un elemento usamos la función unset:

<?php
$fruta = ["manzana", "pera"];
unset($fruta[0]); //Elimina el elemento "manzana".
echo $fruta[0];
//SALIDA ;
//el ı́ndice 0 se queda "desierto", sin elemento.
?>

8
Modificación: Para modificar un elemento, asignamos con un igual un nuevo valor a su posición:

<?php
$fruta=["manzana", "pera"];
$fruta[0] = "melón"; //Cambiamos el elemento "manzana" por "melón".
echo $fruta[0];
//SALIDA melón;
?>

9
3 Variables y constantes
Ya hemos visto varios ejemplos en los que usamos variables para almacenar datos. Esto nos va a permitir almacenar
tipos simples de datos (números, strings, arrays) en variables que luego podemos trabajar y manipular.

Las variables funcionan en un espacio que se denomina ámbito. Este depende del lugar donde se han declarado
(declarar es escribir por primera vez). El ámbito puede ser local o global :

Globales: Funcionan en todo el código.


Locales: Funcionan solo dentro de la función donde se declaran.

Las constantes funcionan exactamente igual que las variables, salvo dos excepciones:
Se declaran con la sentencia define y no se pueden modificar.
Se acceden con su nombre, pero sin $.

Veamos un ejemplo de constante:


<?php
define("PI", 3.1416);
echo PI; //salida 3.1416
?>

10
4 Operadores en PHP
Los operadores son sı́mbolos que nos van a permitir realizar operaciones aritméticas, lógicas, de comparación o
de asignación a nuestras variables y constantes. Ya conocemos muchos de ellos pero en este capı́tulo repasaremos
los más importantes.

4.1 Operadores aritméticos


Nos permiten hacer operaciones aritméticas con las variables. Estas operaciones son las que conocemos de toda
la vida con números:
Suma: Suma dos valores numéricos (+).
Resta: Resta dos valores numéricos (-).
Multiplicación: Multiplica dos valores numéricos (*).

División: Divide dos valores numéricos (/).


Módulo: Extrae el resto de una división entera ( %).

<?php
//Vamos a usar el operador % para obtener el resto de 5/2
echo 5%2;
//SALIDA: 1. (5/2 da como cociente 2 y como resto 1).
?>

Incremento: Incrementa una variable numérica en 1 (++).

<?php
$variable = 1;
$variable++;
echo $variable;
//SALIDA: 2;
?>

Decremento: Decrementa una variable numérica en 1, se representa con dos sı́mbolos menos seguidos, de
manera análoga al incremento.

4.2 Operadores de comparación


Nos sirven para hacer operaciones de comparación entre dos elementos. Siempre responden un boolean (true o
false). Existen de varios tipos:
Igual que (==): Se representa con dos signos de igual (recuerda que un solo signo de igual sirve para
asignar valores) y sirve para comprobar si dos valores son iguales.

<?php
$a = 5;
$b = 5;
echo $a == $b;
//SALIDA: 1. (true)
?>

Distinto de (!=): Es el operador análogo y nos sirve para comprobar si dos valores son distintos.

11
<?php
$a = 5;
$b = 5;
echo $a != $b;
//SALIDA: (nada, eso significa "false")
?>

Mayor que: Responde true si el elemento de la izquierda es estrictamente mayor que el de la derecha. Si
es menor o son iguales devuelve false.
Menor que: El caso análogo, responde true si el elemento de la izquierda es estrictamente menor que el
de la derecha.

<?php
$a = 5;
$b = 5;
echo $a < $b;
//SALIDA: (nada, eso significa "false")
?>

<?php
$a = 6;
$b = 5;
echo $a > $b;
//SALIDA: 1
?>

Mayor o igual que: Responde true si el elemento de la izquierda es mayor o igual que el de la derecha.
Menor o igual que: El caso análogo, responde true si el elemento de la izquierda es menor o igual que el
de la derecha.

<?php
$a = 5;
$b = 5;
echo $a <= $b;
//SALIDA: 1
?>

<?php
$a = 6;
$b = 5;
echo $a >= $b;
//SALIDA: 1
?>

Identidad (===): Se representa con 3 signos de igualdad. Devuelve true si los dos elementos son iguales
y del mismo tipo y false en caso contrario.
No identidad (!==): Es el caso contrario al anterior. Por ejemplo devolverı́a false si comparamos el número
5 con el string ”5”.

<?php
$a = 5;
$b = "5";

12
echo $a == $b;
//SALIDA: 1 (son iguales aunque no sean del mismo tipo)
?>

<?php
$a = 5;
$b = "5";
echo $a === $b;
//SALIDA: (nada, "false". Aunque sean "iguales" no son del mismo tipo.)
//Uno es string y el otro numérico)
?>

4.3 Operadores lógicos


Nos sirven para hacer operaciones lógicas. Comprobaremos si se cumplen una o varias condiciones, para luego
actuar en consecuencia. Por ejemplo, podemos utilizarlos con la función if (que veremos más adelante) para tomar
ciertas decisiones en el código.
Y lógico (&&): Devolverá true si y solo si ambas expresiones son verdaderas.

<?php
$a = 5;
$b = 5;
$c = 6;
echo $a == $b && $c > $b;
//SALIDA: 1 ($a y $b son iguales y $c es mayor que $b)
?>

<?php
$a = 5;
$b = 5;
$c = 3;
echo $a == $b && $c > $b;
//SALIDA: ($a y $b son iguales pero $c no es mayor que $b)
?>

O lógico (||): Devuelve true siempre y cuando al menos una de las expresiones sea true. Si no, devuelve
false.

<?php
$a = 5;
$b = 5;
$c = 6;
echo $a == $b || $c > $b;
//SALIDA: 1 ($a y $b son iguales y $c es mayor que $b, se cumplen las dos.)
?>

<?php
$a = 5;
$b = 5;
$c = 3;
echo $a == $b || $c > $b;
//SALIDA: 1 ($a y $b son iguales y eso ya hace que una condición se cumpla)
?>

13
Negación (!): Invierte el resultado de una expresión. Si era true la transforma a false y al revés.

<?php
$a = 5;
$b = 6;
echo ! ($a > $b);
//SALIDA: 1 (La comparación da false, pero el ! la invierte)
//usamos los paréntesis para dar prioridad a las operaciones
?>

4.4 Operadores de asignación


Sirven para asignar un valor a una variable. Ya conocemos el (=), pero hay algunos más:
Operador de asignación simple (=): Asigna un valor a una variable.
Operador de asignación compuesta: Asigna un valor calculado a partir del valor que ya tiene una variable.

<?php
$a = 5;
$a += 3; //equivale a $a = $a + 3;
echo $a;
//SALIDA: 8 ($a tenı́a valor 5 y le hemos sumado 3)
?>
<?php
$a = 5;
$a -= 3; //equivale a $a = $a - 3;
echo $a;
//SALIDA: 2 ($a tenı́a valor 5 y le hemos restado 3)
?>
<?php
$a = 5;
$a *= 3; //equivale a $a = $a * 3;
echo $a;
//SALIDA: 15 ($a tenı́a valor 5 y lo hemos multiplicado por 3)
?>
<?php
$a = 15;
$a /= 3; //equivale a $a = $a / 3;
echo $a;
//SALIDA: 5 ($a tenı́a valor 15 y lo hemos dividido entre 3)
?>

14
5 Estructuras de control
Para controlar el flujo de ejecución (o qué partes del código se han de ejecutar o no) dependiendo de algunas
condiciones tenemos lo que se llaman estructuras de control. Son sentencias predefinidas que nos van a permitir
discernir entre unas instrucciones y otras. Veremos las sentencias condicionales y los bucles.

Todas tienen los siguientes elementos:


Palabra reservada: La instrucción dentro del lenguaje: if, else, foreach, etc.
Condición a evaluar: La condición que dirimirá si hay que ejecutar el código o no.
Código a ejecutar: El código que se debe ejecutar dependiendo de la condición. Mi recomendación es ponerlo
siempre entre llaves ({}), aunque no es estrictamente necesario si el código es de solo una instrucción.

5.1 Sentencias condicionales


Son las más conocidas del mundo de la programación, seguro que has oı́do hablar de ellas: if, else, elseif, switch.
Ejecutan una acción dependiendo de la condición a evaluar. Esta condición siempre ha de ser un boolean, o sea, el
resultado de una operación lógica o de comparación.

if: Es el clásico si. Si la condición es true entonces se ejecuta el código que define.

<?php
$a = 5;
$b = 3;
if($a > $b)
{
echo $a." es mayor que ".$b;
}
//SALIDA: 5 es mayor que 3.
?>

else: Se combina con el if para ejecutar un fragmento de código en caso de que no se cumpla la condición.

<?php
$a = 1;
$b = 3;
if($a > $b)
{
echo $a." es mayor que ".$b;
}
else
{
echo $a." es menor que ".$b;
}
//SALIDA: 1 es menor que 3.
?>

elseif: Evalúa varias condiciones de forma anidada o encadenada. Se combina con if y else.

<?php
$nota = 7;
if ($nota >= 9) {
echo "Sobresaliente";
} elseif ($nota >= 7) {

15
echo "Notable";
} elseif ($nota >= 5) {
echo "Aprobado";
} else {
echo "Suspenso";
}
//SALIDA: Notable. (Prueba a cambiar el valor de $nota y verás lo que hace)
?>

switch: Permite hacer lo mismo que el elseif pero personalmente me resulta mucho más atractivo. Le apli-
camos el switch a una variable y la evaluamos con las palabras de control case. Dependiendo del case que se
cumpla, entonces ejecutamos ese código. Por último, salimos del switch con la instrucción break. Si ningún
case se cumple entonces usamos el default.

<?php
$nota = 7;
switch ($nota) {
case $nota >= 9:
echo "Sobresaliente";
break;
case $nota >= 7:
echo "Notable";
break;
case $nota >= 5:
echo "Aprobado";
break;
default:
echo "Suspenso";
}
//SALIDA: Notable
?>

5.2 Bucles
Estas estructuras de control nos permiten hacer que un mismo código se repita tantas veces como hagan falta
hasta que se cumpla la condición de salida. Existen varios pero solo trabajaremos while y foreach que son, a mi
juicio, los más utilizados en este ámbito.
while: Ejecuta el código entre llaves mientras se cumpla la condición a evaluar. Es importante asegurarnos
que en cada iteración algún valor de la condición cambie, si no entraremos en un bucle infinito.

<?php
$a = 0;
$b = 5;
while ($a < $b)
{
echo $a. "es menor que ".$b."<br/>";
$a++; //incrementamos el valor de $a en una unidad.
}
//cuando $a vale 5 ya no se cumple la condición y se sale del while
echo $a. " ya no es menor que ".$b."<br/>";
/* SALIDA
0 es menor que 5
1 es menor que 5
2 es menor que 5

16
3 es menor que 5
4 es menor que 5
5 ya no es menor que 5*/
?>

foreach: Este bucle nos va a servir para recorrer todos los elementos de un array. Podemos usarlo tanto para
manipularlos como para mostrarlos, por ejemplo. La estructura es foreach ( array as item){ ... }. El item será
una variable nueva a la que se le autoasignará el valor del elemento del array en esa iteración.

<?php
$frutas =["pera", "mango", "plátano", "cereza"];
foreach($frutas as $frutaActual)
{
//en cada iteración $frutaActual tendrá un valor distinto
echo $frutaActual."<br/>";
}
/* SALIDA:
pera
mango
plátano
cereza
*/
?>

17
6 Funciones en PHP
El uso de funciones nos va a permitir definir fragmentos de código que nos hagan tareas especı́ficas. Además,
les asignaremos un nombre y podremos reutilizarlas todas las veces que queramos, sin tener que escribir el código
varias veces. Las funciones constan de varias partes:

Palabra function: Sirve para indicar que vamos a definir una función.

Nombre: Asignaremos un nombre a nuestra función. Hay que tener en cuenta que no se les pueden poner
nombres que sean palabras reservadas.
Parámetros: Se colocan entre paréntesis y separados por comas, y son los datos que le vamos a pasar a nuestra
función, para que opere con ellos. Es importante tener en cuenta la cantidad y el tipo de los parámetros.

Cuerpo: Se pone entre llaves ({}) y define lo que va a hacer la función. Cualquier variable que se defina
dentro de las llaves solo se podrá usar desde dentro de la propia función (ámbito local).
Retorno: Es opcional e indica si la función debe devolver algo. Por ejemplo una función que utilicemos para
multiplicar dos valores sı́ que ha de devolver el valor de la operación. Se usa la palabra reservada return.

Una vez tenemos la función definida, podemos invocarla o llamarla desde cualquier otra parte del código. Para
ello debemos escribir su nombre y pasarle los parámetros que requiera, en el orden adecuado, entre paréntesis y
separados por comas. Veamos un par de ejemplos:

<?php
//definimos la función "saludar"
function saludar($nombre) {
echo "¡Hola, " . $nombre . "!";
}
//invocamos a la función con el parámetro "aprendices"
saludar("aprendices"); // SALIDA:: ¡Hola, aprendices!
?>

<?php
//definimos la función
function area_circulo($radio) {
//usamos una constante, PI
define("PI", 3.1416);
$area = PI * $radio * $radio;
//la función devolverá un valor, el área del cı́rculo
return $area;
}

$radio = 5;
//invocamos la función area_circulo y le pasamos el parámetro $radio, que vale 5.
$area = area_circulo($radio);
echo "El área del cı́rculo es: " . $area;
//SALIDA: El área del cı́rculo es: 78.54
?>

18
7 Funciones y librerı́as comunes en PHP
Como en todos los lenguajes de programación, en PHP hay funciones y librerı́as predefinidas que podemos utilizar
sin tener que definir. Existen funcionalidades muy útiles para nosotros, que nos van a permitir trabajar con cadenas,
arrays, ficheros y fechas.

7.1 Funciones de tratamiento de cadenas


Ya conocemos de sobra la operación de concatenación (.) porque la llevamos usando a lo largo de todo el libro.
Pero existen más, muchas más. Veamos algunas:
Subcadenas: Podemos sacar partes de una cadena con la función substr. Se pueden sacar partes iniciales,
finales o intermedias, según convenga:

NOTA: Fı́jate bien en la cantidad de parámetros que hay dentro de los paréntesis de substr, ya que
delimitan su uso. Por ejemplo en el primer caso tenemos 3 parámetros: nombre, 0 y 8. En otros casos solo
hay 2.

<?php
$nombre = "Aprendiz De SEO";
//substr(variable, pos_inicial, número_de_caracteres_leı́dos)
$ocholetras = substr($nombre, 0, 8);
/*
sacamos solo los caracteres desde la posición 0 a la 8
ya que empezamos en la posición 0 y leemos 8 posiciones
*/
echo $ocholetras; // Salida: Aprendiz
?>

<?php
$nombre = "Aprendiz De SEO";
//substr(variable, posición_desde_donde_se_empieza_a_contar)
$finalDeCadena = substr($nombre, 9);
/*
sacamos solo los caracteres desde la posición 9 hasta el final
*/
echo $finalDeCadena; // Salida: De SEO
?>

<?php
$nombre = "Aprendiz De SEO";
//substr(variable, pos_inicial, número_de_caracteres_leı́dos)
$letrasIntermedias = substr($nombre, 9, 2);
//empezamos a contar por la posición 9 y leemos 2 caracteres
echo $letrasIntermedias; // Salida: De
?>

<?php
$nombre = "Aprendiz De SEO";
//substr(variable, posición_desde_donde_se_empieza_a_contar)
$ultimasTresLetras = substr($nombre, -3);
//sacamos solo los últimos 3 caracteres, ya que el nº es negativo
echo $ultimasTresLetras; // Salida: SEO
?>

19
Reemplazos: Puedes reemplazar una parte de una cadena con otra cadena usando la instrucción str replace.
Esto nos va a resultar muy útil para transformar cadenas a URLs o a direcciones que Google Maps pueda
entender (ya que hay que cambiar los espacios por sı́mbolos +).

<?php
$nombre = "Aprendiz De SEO";
//str_replace(cadena_a_reemplazar, nueva_cadena, variable)
$nuevoNombre = str_replace("Aprendiz", "Experto", $nombre);
//reemplazamos "Aprendiz" por "Experto" en la variable "Aprendiz De SEO"
echo $nuevoNombre; // Salida: Experto de SEO
?>

<?php
$nombre = "Aprendiz De SEO";
//str_replace(cadena_a_reemplazar, nueva_cadena, variable)
$nuevoNombre = str_replace(" ", "+", $nombre);
//reemplazamos todos lso espacios por "+" en la variable "Aprendiz De SEO"
echo $nuevoNombre; // Salida: Aprendiz+de+SEO
?>

Transformaciones: Podemos realizar transformaciones de la propia cadena, por ejemplo, pasarla entera a
mayúsculas con strtoupper o a minúsculas strtolower :

<?php
$nombre = "Aprendiz De SEO";
$nuevoNombre = strtoupper($nombre);
echo $nuevoNombre;
$nuevoNombre = strtolower($nombre);
echo "<br/>"; //introducimos nueva lı́nea HTML
echo $nuevoNombre;
/*
SALIDA:
APRENDIZ DE SEO
aprendiz de seo
*/
?>

Podemos hacerlo también de esta forma, concatenando cadenas:

<?php
$nombre = "Aprendiz De SEO";
$mayusculas = strtoupper($nombre);
$minusculas = strtolower($nombre);
echo $mayusculas."<br/>".$minusculas;
/*
SALIDA:
APRENDIZ DE SEO
aprendiz de seo
*/
?>

¿Le damos una vuelta de tuerca más? Los resultados de aplicar strtoupper y strtolower son cadenas de texto,
con lo que se pueden concatenar directamente, mira cómo lo resolvemos en 2 lı́neas:

20
<?php
$nombre = "Aprendiz De SEO";
echo strtoupper($nombre)."<br/>".strtolower($nombre);
/*
SALIDA:
APRENDIZ DE SEO
aprendiz de seo
*/
?>

7.2 Manipulación de arrays


A lo largo de nuestra labor de programación nos encontraremos muy frecuentemente con datos organizados en
arrays. Es fundamental conocer las funciones que PHP nos ofrece para trabajar con ellos:

print r: Muestra por pantalla el contenido de un array. Sirve para otros tipos de datos, con lo que primero
mostrará el tipo de datos que es y luego cada elemento y su posición entre corchetes.

<?php
$frutas = ["manzana", "banana", "pera"];
print_r($frutas);
//SALIDA: Array ( [0] => manzana [1] => banana [2] => pera )
?>

count: Cuenta la cantidad de elementos que tiene un array.

<?php
$frutas = ["manzana", "banana", "pera"];
$cantidad_frutas = count($frutas);
echo "Hay " . $cantidad_frutas . " frutas."; // SALIDA: Hay 3 frutas.
?>

array push: Agrega uno o más elementos al final de un array, que se le ha de pasar como primer parámetro.

<?php
$numeros = [1, 2, 3];
array_push($numeros, 4, 5);
print_r($numeros);
// SALIDA: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
?>

array pop: Elimina y devuelve el último elemento de un array.

<?php
$colores = ["rojo", "verde", "azul"];
$ultimo_color = array_pop($colores);
echo "El último color era: " . $ultimo_color."<br/>";
// SALIDA: El último color era: azul
print_r($colores); // SALIDA: Array ( [0] => rojo [1] => verde )
?>

array merge: Combina dos o más arrays en uno nuevo.

21
<?php
$array1 = [1, 2];
$array2 = [3, 4, 5];
$array_combinado = array_merge($array1, $array2);
print_r($array_combinado);
// SALIDA: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
?>

array keys: Devuelve todas las claves de un array asociativo en un nuevo array.

<?php
$usuario = ["nombre" => "Juan", "edad" => 30, "ciudad" => "Madrid"];
$claves = array_keys($usuario);
print_r($claves);
// SALIDA: Array ( [0] => nombre [1] => edad [2] => ciudad )
?>

array values: Devuelve todos los valores de un array asociativo en un nuevo array.

<?php
$usuario = ["nombre" => "Juan", "edad" => 30, "ciudad" => "Madrid"];
$valores = array_values($usuario);
print_r($valores); // SALIDA: Array ( [0] => Juan [1] => 30 [2] => Madrid )
?>

in array: Busca un valor especı́fico dentro de un array y devuelve true si lo encuentra, false si no. Primero
pasamos el valor que queremos encontrar y después el array.

<?php
$frutas = ["manzana", "melón", "pera"];
if (in_array("melón", $frutas)) {
echo "Hay melón.";
} else {
echo "No hay melón.";
}
//SALIDA: Hay melón.
?>

7.3 Manejo de ficheros


PHP nos ofrece varias funciones para trabajar con ficheros, tanto para leer como para escribir; además de crear
o eliminar. Esto abre un mundo de posibilidades, ya que vamos a poder trabajar con datos en ficheros CSV y
también acceder a contenido alojado en internet. Vamos a verlo:
fopen: Abre un archivo en un modo concreto. Podremos trabajar con él en el futuro. Sintaxis: fileopen(ruta,
modo). Los modos pueden ser los siguientes:
• r: lectura.
• w: escritura.
• a: añadir (empieza a escribir al final del fichero).
• x: crea el fichero si no existe.
fclose: Cierra el fichero y libera la memoria. Es importante hacer esto para evitar sobrecargas.
fread: Lee un número determinado de bytes desde un archivo abierto. Sintaxis: fread(archivo, longitud).
Podemos usar filesize(ruta al archivo) para leer el contenido entero.

22
Para las pruebas, creamos un fichero txt en el mismo directorio que nuestro holamundo.php y lo llamamos
mi archivo.txt . Tras esto, escribimos algo dentro y lo guardamos.

<?php
$archivo = fopen("mi_archivo.txt", "r"); // Abrir para lectura
$contenido = fread($archivo, filesize("mi_archivo.txt")); // Leer todo el archivo
echo $contenido; // SALIDA: (el contenido de tu txt)
fclose($archivo);
?>

fwrite: Escribe una cadena de texto en un fichero. Sintaxis fwrite(archivo, string). Si combinamos con el
ejemplo anterior podemos escribir en nuestro fichero.

<?php
$archivo = fopen("mi_archivo.txt", "w"); // Abrir para escritura
fwrite($archivo,"Cambiemos el contenido del fichero");//Escribir contenido
$archivo = fopen("mi_archivo.txt", "r"); // Abrir para lectura
$contenido = fread($archivo, filesize("mi_archivo.txt")); // Leer todo el archivo
echo $contenido; // SALIDA: Cambiemos el contenido del fichero
fclose($archivo);
?>

Podemos crear el fichero directamente si no existe y ponerle el contenido que queramos:

<?php
$archivo = fopen("aprendiz.txt", "x"); // Crear si no existe
fwrite($archivo,"¡Hola, aprendices!");//Escribir contenido
fclose($archivo);
?>

Esto debe crear un fichero äprendiz.txtën el directorio en el que está tu holamundo.php con el contenido
que hemos introducido.
unlink: Elimina un fichero. Sintaxis unlink(ruta al archivo).

<?php
unlink("aprendiz.txt");
//cuando ejecutemos esto, debe desaparecer el fichero aprendiz.txt
?>

file get contents: Recibe todo el contenido de un fichero y lo deja en una variable.

Sintaxis: file get contents(ruta al fichero).

<?php
$texto = file_get_contents("mi_archivo.txt");
echo $texto; //SALIDA: el contenido del fichero.
?>

file put contents: Escribe una cadena de texto en un fichero. Sintaxis file put contents(ruta al fichero, ca-
dena).

23
<?php
file_put_contents("mi_archivo.txt", "Hola, Aprendices!);
?>

7.4 Funciones de fecha y hora


Trabajar con fechas y horas en PHP es importante si queremos que en nuestras webs los datos se muestren
correctamente. Hay varias funciones para trabajar con fechas y la variedad es enorme, ası́ que aquı́ te dejo algunos
casos prácticos para que los veas. Usaremos las clases DateTime para los cálculos entre fechas y la función date para
trabajar con las representaciones y cambios horarios. Estas funciones son bastante avanzadas para un principiante,
ası́ que no intentes entender todo al 100 %, lo suyo es quedarse con una idea general y comentar lo que quieras por
el canal de Telegram de Aprendiz De SEO.
Ejemplo 1: Calcular edad a partir de la fecha de nacimiento. Usaremos la función diff de la clase
DateTime para restar dos fechas (la fecha de hoy y la del nacimiento de una persona) y ası́ poder saber la
edad en años.

<?php
function calcularEdad($fechaNacimiento) {
$fechaNacimiento = new DateTime($fechaNacimiento);
$hoy = new DateTime();
$intervalo = $hoy->diff($fechaNacimiento);
return $intervalo->y;
}

$fechaNacimiento = ’1990-03-15’;
$edad = calcularEdad($fechaNacimiento);
echo "Tienes $edad a~nos.";
/*
Este ejemplo utiliza funciones avanzadas, pero está genial para entender las
posibilidades del tratamiento de fechas.
Puedes probar a hacer print_r($intervalo) antes del return para ver qué
es lo que contiene.
Verás que es un objeto (similar a un array asociativo) con datos de a~
nos (y),
meses (m), dı́as (d) e, incluso, horas, minutos y segundos.
*/
?>

Ejemplo 2: Obtener la fecha y hora actual. Un ejemplo un poco más amable en el que mostraremos la
fecha y hora actuales según nuestro huso horario.

<?php
date_default_timezone_set(’Europe/Madrid’); // Ajustar zona horaria
$fechaHoraActual = date(’d/m/Y H:i:s’);
echo "La fecha y hora actual es: $fechaHoraActual";
?>

Ejemplo 3: Cambiar una fecha de formato anglosajón a formato Europeo. Es habitual encontrarnos
con fechas en formato anglosajón, y eso nos puede hacer que confundamos meses con dı́as. Con esta función
podemos corregirlo:

<?php
function convertirFechaAEuropeo($fechaAnglosajona) {
// Creamos un objeto DateTime a partir de la fecha anglosajona

24
$fecha = DateTime::createFromFormat(’m/d/Y’, $fechaAnglosajona);

// Formateamos la fecha en formato europeo (dı́a/mes/a~


no)
return $fecha->format(’d/m/Y’);
}
// Ejemplo de uso
$fechaAnglosajona = "04/15/2024";
$fechaEuropea = convertirFechaAEuropeo($fechaAnglosajona);
echo "Fecha en formato europeo: " . $fechaEuropea; // Imprimirá: 15/04/2024
?>

Y con esto y un bizcocho acabamos la tortura de las fechas. Lo sé, no tenı́a que haberlo metido, pero espero
que te haya abierto la mente y comprendas todo lo que se puede hacer con esto, aunque luego le pidas el código a
ChatGPT.

7.5 Bonus track: lectura de un CSV y muestra en una tabla HTML


Uno de los casos prácticos más frecuentes a los que me enfrento a diario en mis nichos es la lectura de los ficheros
CSV. Con lo que ya sabemos y un par de tips y conceptos más, podremos aprender a leer y mostrar un CSV. ¡Vamos
a verlo!

Primero creamos un fichero en Excel o cualquier otra hoja de cálculo o procesador de textos y lo llamamos
animales.csv. En este ejemplo si pegas este código en un nuevo fichero y lo guardas, servirá.
Perro,Mamı́fero,5
Gato,Mamı́fero,3
Pájaro,Ave,2

Puedes comprobarlo usando tu hoja de cálculo habitual. Un fichero CSV no es más que un fichero de texto cuyas
columnas se separan por comas, o puntos y comas. Bien, ahora vamos a escribir nuestro programa para leer el CSV.

<?php
$archivo_csv = "animales.csv";
// Abrir el archivo CSV
$fp = fopen($archivo_csv, ’r’);
// Crear una tabla HTML
echo "<table>";
echo "<tr><th>Nombre</th><th>Tipo</th><th>Edad</th></tr>";
// Leer cada lı́nea del archivo CSV
while (($row = fgetcsv($fp)) !== false) {
// Imprimir cada fila como una nueva fila en la tabla
echo "<tr>";
foreach ($row as $cell) {
echo "<td>" . $cell . "</td>";
}
echo "</tr>";
}
// Cerrar el archivo
fclose($fp);
echo "</table>";
?>

Al abrir el fichero en tu navegador, verás una tabla con los datos del CSV. Tómate tu tiempo en añadir nuevas
lı́neas, o jugar con la forma de presentación de los datos. La clave está en el while, que irá leyendo el fichero lı́nea
por lı́nea con la instrucción fgetcsv. Una vez tiene el contenido de la lı́nea, lee cada celda escribiendo los datos en
una tabla HTML. El ejemplo es sencillo, pero requiere algo de tiempo y pruebas para asimilarlo.

25
Por cierto, puede que quieras revisar la documentación de la función fgetcsv que puedes encontrar aquı́. Ahı́ verás
que la función devuelve la fila entera como un array y por eso luego le aplica el foreach.

26
8 Aplicaciones prácticas en WordPress
La mayorı́a de la gente que va a usar este manual está interesada en desarrollar pequeñas funcionalidades en sus
WordPress. Como sabes, WordPress está escrito en PHP y eso hace que haya una comunidad tan gigantesca de
desarrolladores a su alrededor.

Una de las particularidades de WordPress es el uso de ganchos o hooks que no son más que eventos a los que
podemos reaccionar. WordPress ejecuta uno de estos eventos cuando ocurre algo que considera importante (desde
cargar el header de una página hasta realizar una venta en WooCommerce) y ahı́ es donde nosotros podemos inyectar
código y crear funcionalidades.

La lista de hooks es larguı́sima y no hace falta sabérsela entera. Seguro que si hay algún evento al que quieras
reaccionar, alguien habrá puesto ahı́ un hook para ti.

Para no complicar mucho las cosas haremos un par de ejemplos a modo de demostración de lo que se puede
hacer. Para ello tendrás que añadir el código en el functions.php de tu WordPress. Te recomiendo hacer una copia
de seguridad antes de tocar nada, por si se nos va de las manos ;).

8.1 Enviar un email a otra cuenta de correo cuando nos dejan un comentario
El hook wp insert comment se dispara cuando se inserta un nuevo comentario en la base de datos de WordPress.
Este hook nos va a permitir trabajar con el contenido del comentario antes de guardarlo. Podemos modificarlo,
reenviarlo, duplicarlo... ¡Lo que queramos!

En este ejemplo enviaremos un email a otra cuenta de correo que no sea la de administración para notificar que
hemos recibido un comentario y que está a la espera de aprobación.

<?php
// Agrega este código en el archivo functions.php del tema activo

function enviar_email_nuevo_comentario($comment_id, $comment_object) {


// Obtener el email
$admin_email = "[email protected]";

// Obtener detalles del comentario


$comentario_autor = $comment_object->comment_author;
$comentario_contenido = $comment_object->comment_content;
$post_id = $comment_object->comment_post_ID;
$post_titulo = get_the_title($post_id);
$post_url = get_permalink($post_id);

// Crear el asunto y el contenido del correo


$asunto = "Nuevo comentario en tu sitio web";
$mensaje = "Hola, Aprendiz:\n\n";
$mensaje .= "Se ha recibido un nuevo comentario en la publicación: " . $post_titulo . "\n";
$mensaje .= "Comentario de: " . $comentario_autor . "\n";
$mensaje .= "Contenido del comentario: \n" . $comentario_contenido . "\n\n";
$mensaje .= "Puedes ver el comentario aquı́: " . $post_url . "\n";

// Enviar el correo
wp_mail($admin_email, $asunto, $mensaje);
}

// A~
nadir la función al hook wp_insert_comment
// Con esta instrucción hacemos que cuando se dispare el hook también se ejecute la función
add_action(’wp_insert_comment’, ’enviar_email_nuevo_comentario’, 10, 2);

27
?>

Y ya lo puedes quitar cuando te coma el SPAM.

8.2 Notificar en un canal de Telegram cuando subas un post nuevo


Vamos a crear un bot de Telegram que escriba mensajes en el grupo que quieras notificando a la gente que lo
has hecho. Para ello vamos a salirnos un poco de lo que es estrictamente PHP y vamos a ver cómo crear un bot en
Telegram y sacar los datos que necesitamos.
Paso 1. Crear el bot: Buscamos botfather en Telegram y podremos hablar con papá bot. Si nunca hemos
hablado con él tendremos que pasarle el comando start. Después en el menú seleccionaremos newbot, ponemos
el nombre que queramos y luego le damos un nombre de usuario, que deberá terminar en bot.
Paso 2. Guardar las credenciales: Si no está repetido, entonces te dará las credenciales, que no es más
que un token que tienes que guardar para más adelante.
Paso 3. Obtener tu ID de grupo: Si quieres que escriba en tu grupo, primero debes añadir al bot a tu
grupo. Una vez lo hayas hecho, espera a que se envı́e algún mensaje (o envı́alo tú) y escribe la siguiente URL
con tu token: https://api.telegram.org/bot[BOT-TOKEN]/getUpdates. Dentro encontrarás un texto con algo
parecido a un campo que se llama chat y un valor id con un número (seguramente negativo). Ese es el número
de tu canal.

NOTA: Si no aparece nada aunque envı́es mensajes expulsa al bot y vuélvelo a invitar.
Paso 4. Crear el código del bot en WordPress: Ahora ya puedes crear el código del bot en el functions.php
de tu WordPress. El hook que vamos a usar es transition post status, que se dispara cuando un post cambia
de estado. Comprobaremos que ha cambiado a publicado desde otro estado que no sea publicado. Pega este
código:

<?php
// A~
nadir una acción al hook ’transition_post_status’
//que se ejecuta cuando se publica un nuevo post
add_action(’transition_post_status’, ’enviar_mensaje_telegram_nuevo_post’, 10, 3);

function enviar_mensaje_telegram_nuevo_post($new_status, $old_status, $post) {


// Asegurarse de que el nuevo estado sea ’publish’ y el antiguo no sea ’publish’
if ($new_status === ’publish’ && $old_status !== ’publish’ && $post->post_type === ’post’) {
// Configura tu token de bot de Telegram y el ID de chat del grupo
$telegram_bot_token = ’TU_TOKEN_DEL_BOT_DE_TELEGRAM’;
$telegram_chat_id = ’TU_CHAT_ID_DEL_GRUPO’;

// Obtener la meta description del post (o generar un resumen del contenido)


$meta_description = get_post_meta($post->ID, ’_yoast_wpseo_metadesc’, true);
if (empty($meta_description)) {
$meta_description = wp_trim_words($post->post_content, 30);

28
// Generar un resumen corto si no hay meta descripción
}

// Crear el mensaje para enviar a Telegram


$mensaje = "Nuevo post publicado en Aprendiz De SEO:\n";
$mensaje .= "*" . get_the_title($post->ID) . "*\n\n";
$mensaje .= $meta_description . "\n\n";
$mensaje .= "Lee más aquı́: " . get_permalink($post->ID);

$url = "https://api.telegram.org/bot$telegram_bot_token/sendMessage?
chat_id=$telegram_chat_id&text=" . urlencode($mensaje) . "&parse_mode=Markdown";

// Enviar la solicitud a la API de Telegram


$response = wp_remote_get($url);

// Verificar si hubo un error en la solicitud


if (is_wp_error($response)) {
error_log(’Error al enviar el mensaje de Telegram: ’ .
$response->get_error_message());
} else {
error_log(’Mensaje enviado correctamente a Telegram.’);
}
}
}

¡Y ya está! Siéntete libre de cambiar lo que requieras (o pregúntale a ChatGPT) para utilizarlo con otros
hooks y mandar otro tipo de mensajes. ¡Las posibilidades son gigantes!

29
9 La verdadera potencia
En las primeras páginas de este microbook te contaba que PHP es muy potente por su integración con HTML,
pero solo hemos visto ejemplos donde generábamos código HTML desde el propio PHP. Eso ya de por sı́ es bastante
interesante, pero también podemos combinar código HTML puro con código PHP.

Para combinar el código tenemos que cumplir varios requisitos:


La extensión del fichero tiene que ser .php.
Puedes escribir código HTML normal, como siempre.
Cuando quieras incrustar código PHP solo tienes que poner las etiquetas que conoces.

Vamos a ver un último ejemplo:


<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Perfil de Aficiones</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
color: #333;
padding: 20px;
}
h1, h2 {
color: #0056b3;
}
ul {
list-style-type: none;
padding: 0;
}
li {
background-color: #e9ecef;
margin: 5px 0;
padding: 10px;
border-radius: 5px;
}
</style>
</head>
<body>
<?php
// Definimos el nombre
$nombre = "Vı́ctor Aprendiz de SEO";

// Creamos un array de aficiones


$aficiones = ["tecnologı́a", "animales", "senderismo"];
?>

<h1>Bienvenid@ a mi perfil</h1>
<p>Hola, soy <?php echo $nombre; ?>. Aquı́ están algunas de mis aficiones:</p>

<h2>Mis aficiones</h2>
<ul>

30
<?php
// Recorremos el array de aficiones
foreach ($aficiones as $aficion) {
// Imprimimos cada afición como un elemento de lista
echo "<li>" . $aficion . "</li>";
}
?>
</ul>
</body>
</html>

Fı́jate en cómo se integra el código PHP en el contenido HTML. Esto nos va a permitir dotar de dinamismo a
nuestras webs.

31
10 Recursos y Herramientas
La web está llena hasta arriba de recursos para aprender estos conceptos básicos de PHP, pero tienen un problema:
no son interesantes de primeras. Ahora que ya cuentas con un primer acercamiento creo que puedo enseñarte los
recursos que yo utilizo cuando tengo dudas o problemas con PHP (sı́, yo los tengo, y no pocos...).

W3Schools: La biblia sobre tecnologı́as web.

Stack Overflow: ¿Quién no conoce esto?


Manual de PHP: Documentación completa del lenguaje.
Code Academy: Tutoriales y ejemplos en inglés.

¡Y nada más! Hasta aquı́ este microbook con conceptos básicos de PHP para que puedas utilizarlo en tus nichos
y webs y no recurras siempre a los plugins :P.

Te recuerdo que sigo compartiendo siempre cosas en:


LinkedIn: https://www.linkedin.com/in/vialonso/

Web SEO: https://aprendizdeseo.top


Web de Desarrollador: https://walkiriaapps.com
Canal de Telegram

Newsletter Molona: https://aprendizdeseo.substack.com/


Comunidad de WordPress de habla hispana gestionada por mı́ con amor.
X (antes Twitter): https://x.com/vicks630
Si tienes alguna duda, sugerencia, queja o reclamación, puedes encontrarme en todos esos lugares. Para que veas
que no me escondo ;).

32

También podría gustarte