 Empezamos con la segunda charra de la mañana, Lari Serrano, desde Madrid. En Madrid, al final no sé cuántos madres tenemos ahí, pero poquitos. Bueno, vamos a hablar del fútbol SPHP. Como tiene unas leyes de presentación, ya se va a presentar el mismo. Un aplauso, por favor. Un aplauso. Comentamos. Voy a venir y pediros un poco de ayuda, porque yo no tengo mucho torrente de voz y la sala que tenemos y la pedí la ayuda. No, no, es solo para la cámara. Vale, entonces, antes de empezar, gracias por venir. Quiero aportar a nuestro autorizador y a los comentarios y a todos por que montar esto. Porque montar esto es un Javier importante y la verdad es que hay un esfuerzo muy grande detrás. Y quiero darles las gracias por darme la oportunidad de estar aquí. Y a vosotros deciros que me gustaría que fuese una charla. Quiero decir, si hay algo que no me explico, que no me entendéis bien, por favor, paradme y retomamos. Intento corregir la explicación y seguimos. No es una charla técnica, va a aparecer alguna palabra, algún penicismo, pero me gustaría, lo que os digo, introducirlo primero. Entonces, si no lo hago, cortarme sin ningún problema o si tenéis que añadir alguna cosa a lo que estemos viendo, por favor, levantad la mano y charlamos. Vale, como decía Moncho, soy Dani Serrano, soy desarrollador y formador. Hago un trabajo sin responsable de WordPress desde cero. Es un podcast que hago con varias personas de la comunidad de WordPress. Estoy súper contento y desde aquí quiero aprovechar para darle las gracias así un poco en público. Y además, trabajo como desarrollador y formador en envermedia. Voy a extender con esto, pero bueno, solamente deciros que formamos esta empresa tres personas que nos conocimos en una vuelta. Entonces, os animo a hacer networking, os animo a relacionaros, os animo a contar qué hacéis y si buscáis algún perfil en concreto, este tipo de cosas aprovechad porque es un sitio buenísimo para hacerlo. Y bueno, vamos a ver un poco lo que hemos venido a esta charla que es por qué no debemos utilizar siempre el pichero .php. Antes de empezar, el pichero .php es un pichero que viene en el tema de WordPress y que vamos a poder utilizar para extender las funcionalidades o todo lo que trae ese tema en concreto, ¿vale? Ahora veremos un poco más en detalle. El problema que tenemos, al utilizarlo siempre en los típicos tutoriales que encontramos por Google, coge este código, pégalo en .php y a correr, ¿vale? Esto es lo que vamos a ver, ¿vale? El problema que tenemos es el efecto networking. El efecto networking es que si yo quito ese tema, todo el código que yo he metido ahí va a desaparecer. Siempre tenemos la idea de bueno, no pasa nada. El metido yo sé que está ahí cuando lo vaya a quitar, lo copio y lo pego en el nuevo punto. Bueno, las cosas no salen como esperamos, ¿vale? Vamos a ver cómo solucionarlo, cómo lo deberíamos hacer, ¿vale? Esto es lo que vamos a hablar hoy. Es algo sencillo, pero es algo importante, sobre todo porque tú no eres de por vida el responsable de una web y se te va a olvidar, se te va a olvidar que va a estar ahí. Y lo malo no es las cosas que cuando cambies el tema te das cuenta de que faltan, porque te has dado cuenta de que faltan y ya lo vas a corregir, sino son las cosas que no te das cuenta de que faltan. Y dentro de dos meses dices, estás totalmente perdido, ¿vale? Entonces esto es lo que vamos a ver hoy. El fichero punto pi ht, no utilizarlo por el efecto locking y la solución va a ser utilizar plugins, que eso siempre van a estar, excepto los que tenemos, siempre van a estar en la instalación de WordPress aunque cambiamos de tema, ¿vale? Esta va a ser la charla. Entonces lo primero, lo que decíamos, ¿vale? Yo lo pego ahí, corto, pego y funciona. Entonces vamos a intentar entender por qué funciona eso, ¿vale? Para esto vamos a introducir el orden de carga de WordPress. Este es un pequeño tecnicismo de los que el escrito hablaba y él lo quiere explicar, ¿vale? WordPress como cualquier software se va ejecutando en orden. Primero una cosa, luego otra, luego otra, luego otra, ¿vale? De aquí el orden de carga. Entonces nosotros veremos ahora en una imagen que he puesto aquí el orden que tiene WordPress. Entonces escribir código en el fichero punto pi ht está bien, pero está bien porque es una buena práctica si la utilizamos bien. Quiere decir, hay cosas que sí que debemos incluir ahí porque forman parte del aspecto visual de la web. Por ejemplo, mi sitio web tiene un menú arriba y yo por diseño quiero que tenga otro abajo. Bueno, eso forma parte del diseño, por lo tanto lo voy a meter en el fichero punto pi ht. Y además la buena práctica me dice que lo haga ahí y no en la plantilla porque cuando se actualice el tema se van a machacar, se van a sobrescribir todos los ficheros excepto el punto pi ht. Por eso partimos de que escribir aquí el código es una buena práctica, ¿vale? Entonces, vamos a ver este orden que os digo. Si os fijáis, tiene tres entradas, pero nos vamos a quedar con esta que es la que carga cuando accedo desde un navegador. Luego tenemos un núcleo común, se va a separar los tres. Y si os fijáis, aquí vamos, pues lo que decía, no vamos bajando en orden y llega un punto, voy a cambiar de slider, pero fijaros que aquí tenemos los plugins, ¿vale? Si pasamos a la siguiente, aquí tenemos el funtion punto pi ht. Y además nos dice, sitio seguro para escribir lo digo, mete aquí todo lo que quieras. Cuidado con el todo lo que quieras, esto es el detalle al que quiero que lleguemos hoy. No vale meter todo lo que queramos, ¿vale? Entonces, el orden de carga empezaría por la slide anterior, viene por aquí, nos oculta por aquí y en nuestro caso va a salir por aquí, ¿vale? Quedaros simplemente con que nosotros, al escribir código en el funtion punto pi ht, lo que estamos haciendo es escribir el código aquí, ¿vale? En este momento de la ejecución. Luego veremos, más adelante vamos a ver otro pantalla con esta slide, pero de momento quiero que os quedéis con eso, ¿vale? Lo que hablamos. He hecho bien, he hecho una buena práctica, he cogido el código, lo he metido, donde incluso me indican que es un sitio seguro para meter el código, pero no lo es todo. Si cambio de tema, si yo me llevo, si borro ese tema de la instalación de WordPress, todo el código que tengo he metido va a desaparecer, va a dejar de ejecutarse. Siempre tenemos la opción de no borrarlo del tirón, sino cambiar de tema, hacer pruebas y tenerlo ahí disponible. Bueno, el tiempo es el que hay, siempre vamos con alguna prisa, nunca hacemos las cosas 100% como deberían ser. Sabed que el efecto locking lo que hace es quitarnos una dependencia para que no podamos quitar, en este caso, ese tema, ¿vale? Lo habéis escuchado seguramente para editores visuales, Divi, Elementor, todos estos. Se habla mucho sobre el efecto locking, es esto. El efecto locking es que si tú utilizas una herramienta para algo y te quedas bloqueado, ya no puedes dejar de utilizarlo, ¿vale? Entonces, nosotros estamos utilizando un tema de WordPress, un tema incluso que nos hemos descargado del repositorio de WordPress, lo estamos haciendo todo genial, pero nosotros mismos estamos creando ese locking al utilizar mal el Function.pc. Cuidado, se puede usar bien lo que hablábamos. Aspecto de diseño, perfecto, meterlo en este fichero, ¿vale? Entonces, para evitar este efecto locking, lo que vamos a hacer es utilizar plugins. En vez de meter el código que yo he encontrado en Google, que me han dicho, pégalo ahí, yo lo que voy a hacer es, como ya sé que existe esto, lo que voy a hacer es lo mismo copiar y pegar, pero en vez de pegarlo aquí, lo voy a pegar aquí, en este caso es plugins, ¿vale? Entonces, vamos a utilizar plugins. Vamos a ver cómo, ¿dónde? Muy rápido, no me voy a meter en cómo hacerlo, pero cuidado, un aviso, lo vamos a ver también. El usuario, no yo que soy el desarrollador, sino el usuario, el administrador de WordPress, puede desactivarlo, puede dar al botón de desactivar. Entonces, sigue habiendo un riesgo de que ese código que yo necesito que se ejecute, finalmente no se ejecute. Entonces, bueno, vamos a ver primero cómo y dónde. Es muy sencillo, yo digo, no voy a entrar en tecnicismos, pero tendríamos que ir dentro de nuestra instalación a la carpeta plugins, crear un nuevo fichero, estos no son todos los variables que tengo que introducir, pero la cosa que quiero que nos quedemos es que tengo que crear un fichero, meter, decirle que su nombre es el nombre que yo le voy a poner y listo. Para este ejemplo, para que luego lo veamos hacia abajo, he metido algunos datos más, pero podríamos utilizar más y no son obligatorios, ¿vale? El caso es que simplemente, creando un fichero en un directorio, ya tengo que crear un plugin, suficiente, y se ve así, yo voy a hacer mis plugins, lo tengo para activar, lo tengo para borrar, si lo activo lo podría desactivar, que es el problema que estoy diciendo, y todos estos datos son los que yo he metido aquí, ¿vale? Super sencillo, no hace falta meternos en más detalle de cómo crear plugins ni buenas prácticas, simplemente estoy creando un fichero en un directorio, ¿vale? Como os decía, el aviso era, se puede desactivar, entonces, yo como desarrollador, que voy a crear algo, voy a, por ejemplo, ampliar la estructura lógica de una web, le voy a meter viviendas, por ejemplo, no quiero hacer una web de alquiler de casas y quiero meter un tipo de contenido que es viviendas. Si yo le permito al usuario-administrador que vaya y dé al botón de desactivar, va a ser un problema, porque la web va a dejar de tener algo importante, algo que forma parte de su estructura. Entonces, ¿cómo puedo no escribir código en el function.php y no arriesgarme a que el usuario se cargue el código que yo he metido? Vale, para esto están los plugins imprescindibles, en inglés es must use, pero en español lo traducimos como imprescindibles, ¿vale? Lo mismo que hacíamos antes, de ir al directorio plugins y crear un fichero dentro de ese directorio, ahora vamos a hacer lo mismo, pero en el directorio M-U-Guion-Plugging, en la carpeta M-U-Guion-Plugging. ¿Vale? La operativa es la misma, si no existe la carpeta la creo, creo el fichero y lo mismo, el código que veíamos, ¿vale? La diferencia, fijaos, que ahora no me da opciones de activar, de borrar, de nada, entonces, yo que soy el desarrollador, estoy metiendo código PHP, el usuario, el administrador lo puede ver desde el panel, si tiene permiso, vamos a suponer que sí, pero no va a poder tocarlo ni modificarlo, ni nada, y en caso, esto para los que conozcáis un poco más la interfaz de WordPress, en caso de que intenten editarlo desde el edito que ya trae WordPress, tampoco van a poder, entonces, estoy metiendo el código que yo quiero, no tengo dependencia del tema que estoy utilizando, eso va a seguir ahí, y no le estoy dando la oportunidad al usuario, al administrador, de que diga, a ver, si doy a desactivar, ¿qué pasa? No le damos esa oportunidad, ¿vale? Entonces, esta sería la buena práctica, ya lo tenemos todo, voy a Google, busco cómo se hace algo, compio y vengo aquí y lo pego, no siempre funciona, depende lo que estemos, el código que estemos escribiendo, no siempre va a funcionar, habrá el código que tú cojas, lo pegas en el fútbol PHP y funciona, te lo traes aquí, lo pegas, y no funciona, algo ha pasado ahí. Entonces, vamos a volver de nuevo, bueno, perdona, aquí os voy a introducir otro término que es hooks, pero lo vamos a ver en la slider, ¿vale? Volviendo al anterior, al orden de carga, ¿por qué no funciona esto que yo acabo de meter? Si seguimos el orden de carga, venía por aquí arriba y yo aquí tengo plugins, fijaos, os fijáis ahora que ponen más use, estos son los imprescindibles que os estoy contando, después los plugins activos y después el fichero Function.php, según el código que yo estoy metiendo, viene por aquí el orden de carga, se ejecuta aquí un código, sigue para abajo, se ejecuta aquí otro código y termina, vamos a poner un ejemplo, un footer, por ejemplo, yo quiero cambiar el footer de mi sitio porque quiero que ponga el desarrollado con mucho amor por Daniel Serrano, que está muy de moda ahora, ¿no? Pues si yo creo ese código y lo pongo aquí, el orden va a ser, viene por aquí, aquí como todavía no he metido nada, viene por aquí, ejecuta todo lo que necesita ejecutar y en el final pone ese código que yo he metido en el footer, perfecto, lo ejecuta y para adelante. Ahora, ese mismo código me lo llevo al plugin, que es la solución que hemos visto, que es la buena, lo pego aquí, entonces el orden de carga viene, ejecuta mi código, sigue para abajo, ejecuta el código que viene en el tema porque un tema ya trae un footer, por lo más general. Entonces, aquí yo lo estoy diciendo arriba, perdona, que vuelvo a empezar, yo aquí arriba lo estoy diciendo, oye, en el footer pon esto, sigue con su ejecución, hace todo lo que tengas que hacer y llega aquí y le dice el tema, oye, en el footer pon esto, entonces yo he puesto primero uno, pero él ha sobre escrito o ha vuelto a poner código encima, ¿vale? Entonces finalmente el footer que se ve es el que viene en el tema. La solución? Hoops, hoops es un término, se traduce como gancho y lo que es, son estos que tenemos aquí, do action y un nombre, do action y un nombre. Esto lo que hace es reservar este espacio para que yo pueda meter código sin tocar el corre de WordPress. Entonces, desde un plugin, porque ya hemos visto que la solución buena es hacerlo en un plugin, le voy a decir, en este caso vamos a trabajar con esto. ¿Qué? En el hook, after setup sim, después de ejecutar el sim, mete el código que yo quiera. Entonces, en este momento el orden va a ser, viene por aquí el orden de carga, aquí se ejecuta, pero yo le voy a decir que lo traiga aquí, aunque el código esté escrito aquí, ¿de acuerdo? Entonces continúa para abajo, ejecuta todo lo que trae el tema y al final yo le he dicho, oye, en este gotito que tienes reservado que yo puedo utilizar, mete el código de mi footer, que es el que yo quiero que aparezca. Entonces, no estoy utilizando punto en punto PHP, estoy metiendo el código en un plugin que es la buena práctica real y lo estoy ejecutando en el momento que yo quiero que se ejecude, no en el momento en el que tengo este hueco de aquí, que son para los plugins, ¿vale? Entonces, esta sería la solución, ¿de acuerdo? El código quedaría así, ¿vale? Hasta ahora lo que hacíamos era, cuando trabajábamos con el plugin punto PHP, lo que hacíamos era coger el código donde lo contremos y pegarlo en la última línea del function, ¿no? Pues lo que vamos a hacer ahora es tener esto preparado para en vez de ir a la última línea del function, venir a esta línea que ya tenemos aquí preparada, ¿de acuerdo? Aquí lo que le estamos diciendo es, en el hook que hemos visto antes ejecuta esta función. Tengo aquí preparada la función y ya solo tengo que meter el código. Entonces, ¿qué podemos hacer ahora mismo para hacer esto? Tener esto preparado. Mañana, cuando vayamos a buscar algo en Google en el Codex de WordPress, donde sea, encontremos este código que solo tengo que cortar y pegar, ya lo tengo listo, esto no va a hacer nada. Sin embargo, yo voy a llegar y lo voy a poner aquí. Si me olvido de esta primera línea, lo que va a pasar es lo que hemos visto al principio, que yo voy a meter código pero el tema va a machacar lo que yo he metido, ¿vale? Entonces, podemos decir que para este ejemplo, esta línea de aquí sería la última línea del function.php, sin ser realmente el fichet. Entonces, vamos a hacer un pequeño resumen y es que en el tema solo debería haber código para el afecto visual. ¿Está bien tener ese function.php para extender lo que ya trae el tema? Para yo añadir widgetArea, para añadir menús, para añadir cualquier cosa. Y lo que debería hacer es reservarme los plugins para meter toda la funcionalidad. Esa es la buena práctica. Todas partes ya sabemos cómo van las cosas, pero ya que lo sabemos, ya que es tan sencillo como copio-código y en vez de pegar aquí, lo pego aquí, vamos a ahorrar problemas a nosotros mismos y a la gente que tenga que venir a tocar nuestro código después, ¿vale? Y juega con los hooks para elegir en qué momento de la ejecución queremos y se ejecute el código que nosotros estamos metiendo para no depender del momento en el que se resultan los plugins, ¿vale? Si hay alguien que no sea técnico que diga, mira, me ha parecido genial lo que me has contado, pero yo ir a los ficheros, crear la carpeta MU plugins, crear el fichero nombre de mi plugin.php, no lo voy a hacer porque se sale mucho de lo que yo hago, de otro trasteo con gómpres y ya está. Utilizado este plugin, se llama Coldes Nippets y lo que hace es, la misma pantalla que os he enseñado yo, aquí debería ir el código, pero dentro del panel. Entonces, no me voy a extender porque tiene varias cositas interesantes, pero bueno, resumiendo lo mucho, es que desde el panel de administración te va a permitir escribir este código en un plugin, te va a abrir una ventanita, tú escribes el código y listo. Estamos simulando lo que yo os he explicado, pero desde el panel de administración. Podemos entrar en malas prácticas para no meter el código en el panel, pero bueno, lo que estamos buscando es una solución para hacerlo bien si no tienes los conocimientos técnicos como para crear un ficheril de php, ¿vale? Entonces, es una alternativa. Me gustaría preguntaros, de los que no tengáis perfil técnico, ¿hay alguno? Todos os tengo. ¿Hay alguna cosa que no hayáis entendido? ¿Me habéis seguido bien toda la aplicación? Sí. Vale, genial pues. Os voy a dejar unos enlaces que van a complementar un poquito lo que os he contado, no se puede explicar todo, ¿vale? Para empezar, las diapositivas los vais a encontrar aquí. Este es el hashtag de la WordCamp. Vale, es www.z.es, ¿vale? Y luego el hashtag. Vale, sobre el orden de carga, que es uno de los temas que hemos introducido. Os dejo un enlace a Pablo López, es un chico de Madrid también en este caso, y os habla sobre el ciclo de carga de WordCamp, que es lo mismo, orden de carga, ciclo de carga, ¿vale? para extender un poquito más esa información sobre el efecto Locking. Pues tú, el año pasado aquí, hablando precisamente de esto, os dejo un enlace para que lo podáis ver un poco más, y Hooks, ¿vale Hooks? Aquí tenemos, yo he enseñado cuatro, cinco, los que cabían en la pantalla, pero hay infinitos, hay un montón. ¿Vale? Y el enlace para el plugin, por si lo queréis utilizar para meter el código. Y nada, esto es de todo, si tenéis... Un aplauso para Agui, por favor. Se ha entendido perfectamente. Los que no escribimos código, se ha entendido perfectamente. ¿Se sirve de ejemplo? Preguntas, por favor. Todos o a veces no. Respecto a los Mass Use Plugins, si yo tengo Multisite y lo hago Mass Use Plugin, va a estar para todos los sites de un día. No te voy a engañar, me pillas. ¿La verdad es que no lo he probado? Es muy rápido de probar. No lo sé. Es incinerante todo, como tiene que ser. Ha habido otra pregunta por ahí, ¿verdad? ¿Puedes decirnos a qué te dedicas? Sí, soy desarrollador. Sí, soy desarrollador Wordpress y con apresiones. ¿Habió otra pregunta por ahí? Un aplauso para Daniel. Para el mundo, por favor. Daniel, muchas gracias. Por curiosidad. ¿Esto lo has aprendido porque de repente estabas desarrollando y no te aparecías y has tenido que solucionarlo? O porque lo has estudiado priormente ¿Cuál era la buena práctica para... Lo de luge. Trabajando. Llegó un momento en el que entró... Claro, cuando empiezas a formarte al principio es como una cosa más sencilla. Voy a aprender Wordpress. Un concepto, ¿no? Voy a aprender Wordpress. Claro, el momento en el que empiezas, ahí, y esto, y esto, y esto, y esto. Llegó un momento en el que cuando descubrí los Mass Use Plugin, llegó a valer perfecto. Si le pongo yo al usuario y la desactiva, me lo ha desactivado, dentro de lo malo. Pero si tú la metes, veinte tipos de contenido y lo desactiva es que se ha cargado la web. En ese momento, yo dije, este código no puede ir. Ya te quedas una esa cosa. Esto se puede mejorar. Bueno, tú sigas aprendiendo y descubres el concepto Mass Use Plugin. Fue deducido, fue aprender un poco, aprender un poco, aprender un poco. Por eso no me he visto la situación de hacerlo en un... No sé decirte. Supongo que no tiene igual, pero... Valiente testimonio. Dani, valiente testimonio. Cuéntanos. Soy Ana Cirujano, soy desarrolladora... ¿Cómo? Soy diseñadora y soy fan de Dani Serrano. Un aplauso a Dani.