Hace un par de días me comentó Ana en el Foro de Soporte que estaba un poco liada sobre dónde y cómo añadir el código de su web.
Por cierto, ¿sabías que tengo un foro de soporte para ayudar a emprendedores online cómo tú?.
Pues en este artículo te explicaré cual es la mejor forma de añadir las funciones PHP en tu WordPress.
¿Te interesa?
Índice de contenidos:
¿Cómo añadir PHP a tu WordPress?
-Para conseguir que se cumplan todos tus deseos sólo tienes que añadir este código a tu functions.php.- ¿Te suena?
Seguro que sí. Es lo más normal.
El proceso sería el siguiente:
- Entras en tu cliente FTP tipo Filezilla, vas a “tu-web/wp-content/themes/tu-tema/functions.php” y allí encuentras un bonito archivo de texto esperando a ser manoseado (también puedes acceder directamente desde el backend abriendo Apariencia/Editor, pero no es nada recomendable).
- Lo abres con el editor de código que más rabia te dé (Sublime text, Notepad++, Atom,…).
- Añades la función que sea al final del todo.
- Comentas la función, o sea, explicas que hace lo que acabas de añadir para que lo sepas en el futuro (poniendo el texto dentro de /* explicación */).
- Pruebas que funcione, y si no lo hace o te has cargado tu web, lo borras y listo.
Pues bien, eso es lo más común, y no tiene nada de malo, pero no es la única forma.
También puedes crear un Plugin de Funciones y añadir tu código allí.
¿Un Plugin de Funciones? ¿Y eso qué es? Te preguntarás.
Ahora te lo explico.
¿Cómo crear un plugin de funciones?
Veamos, un Plugin de Funciones es no es más que un plugin dónde meter tus funciones PHP.
¿Te gusta la explicación? Un poquito circular ¿no? Tipo:
La inteligencia es lo que miden los tests de inteligencia.
Pero es así. Se instala el plugin y en él se añaden las funciones. No tiene más ciencia.
Si quieres usar este método tienes dos formas de hacerlo: o lo creas tú o lo instalas como cualquier otro plugin.
Si quieres crearte tu pedazo de plugin “to guapo”, simplemente tienes que acceder a tu web por tu cliente FTP y:
- Vas a “tu-web/wp-content/plugins/” y creas una nueva carpeta (por ejemplo “funciones”).
- Dentro de la carpeta creas el archivo funciones.php.
- Editas el archivo, copiando y pegando esto.
<?php
/*
Plugin Name: Funciones
Plugin URI: https://derivadacero.com/
Description: Plugin para insertar el código PHP no vinculado al tema.
Version: 1.0
Author: Kiko Pavón
Author URI: https://derivadacero.com/
License: GPLv2 o posterior
*/
- Lo guardas todo muy bien guardadito.
Y listo, vas al FrontEnd de tu web y activas al plugin.
Fácil.
Aunque puede ser más fácil aún.
Si no quieres hacer todo lo anterior puedes descargarte el mío propio e instalarlo en tu web directamente como un plugin normal.
No tiene más, se instala y cuando tengas que añadir alguna función, lo editas, la pegas y la guardas.
Pero…
¿Cuando usar el Plugin de Funciones y cuando el functions.php?
He aquí la cuestión.
Pues en el functions.php se pone el código que tenga que ver exclusivamente con el tema.
Si quieres modificar tu theme y añades un código específico para él, debes de añadirlo ahí.
La lógica es que cuando cambies de tema no vas a necesitar esas funciones, por lo tanto, no tendría sentido que estén por ahí.
Pero si es una modificación que afecte a algo de WordPress en sí mismo o a alguno de los plugins (por ejemplo, activar el editor visual en BBPress), ese código debe ir en tu Plugin de Funciones.
A ver, funcionar va a funcionar igual, pero es más cómodo y más elegante hacerlo de esta forma. Así sabrás dónde está cada cosa, es menos peligroso modificar el Plugin de Funciones, y puedes desactivarlo más fácilmente para descartar fallos.
Yo es como lo hago en mis webs y me parece la mejor forma. ¿Cómo lo ves?
Y con esto y un bizcocho….
Si tienes cualquier problema o cualquier duda ya sabes que soy todo oídos.
¡Un Saludo! 🙂
Hola Kiko! muchas gracias como siempre! entre este artículo y el de qué es el Css, ya comienzo a ver la diferencia entre lo que es una cosa y otra.
El tema de añadir funciones, como hoy día los temas dan tantas y tantas posibilidades y como en particular mi web es tan sencilla, de momento (en mi ignorancia) no veo que pueda usarlo.
Para que acabe de quedarme claro, confírmame si esto es correcto:
– cambiar color, tamaño, efectos especiales… se toca desde el style.CSS
– añadir una función especial con la que por ejemplo, suene una canción al acceder a la web… se toca desde el functions.php
Ale, me voy a comer el bizcocho que ya es la hora del almuerzo!
¡Hola Ana!
Ya te irán surgiendo funciones que añadir. Siempre pasa. Cuando tengas unas pocas, instalas el plugin y pones ahí las que no tengan que ver con el tema.
Exactamente, el CSS se encarga de la apariencia de la Web, el Html de la estructura y el PHP de la funcionalidad.
Imagino que la gran mayoría de cambios que hagas serán de CSS (que es por otra parte el más fácil y el menos peligroso de cambiar).
Las modificaciones de CSS las pones en el style.css debajo del todo. Pero también puedes usar el personalizador.
De todas formas, si tienes cualquier problema, me dices y te echo una mano en lo que pueda.
¡Muchas gracias por dejar el comentario!
Hola
Tengo un plugin que pone una imagen pero no recoge la opción que esta sea “cover” de modo que no queda ajustada, yo entro al .php del plugin busco la función que da el tamaño a la imagen y le pongo a mano “cover” así funciona, pero cada vez que el plugin se actualiza eso desaparece y me toca hacerlo de nuevo. Estoy buscando opciones para hacer esa modificación fuera del plugin, he leído algo pero no termino de aclararme, que sí hooks, que si snippets y me pierdo.
No sé si lo que quiero hacer sería posible con esto de las funciones, ¿cómo indico que la función .php que quiero que modifique o sobreescriba está en ese plugin / directorio / archivo?
Gracias
Hola Isabel.
Como dices, el problema de modificar el código dentro del theme o los plugins es que al actualizarse se pierde esa información extra.
De ahí la importancia de crear un child theme que se mantenga inmutable y modificar tanto el CSS como el PHP. Lo mismo pasa con el plugin de funciones que te comento en el artículo. Lo que subas ahí se quedará ahí guardado independientemente de lo que se actualice.
La idea es:
1. Guardar en el functions.php del child theme el código que modifique el tema.
2.Guardar en el plugin de funciones el código que sea ajeno y que quieras conservar en caso de querer cambiar de tema.
Ahora bien, tu caso es un caso particular en el que estás modificando un plugin y dependiendo del plugin podrás subir la función al plugin de funciones o no.
De todas formas cuando hablas de “cover” y del tamaño de imágenes, seguramente estés hablando de CSS y no de PHP, ¿no?
Necesito más información, pero si es así, instalando un plugin como Simple CSS, te vale. Añades ahí el CSS que quieras modificar y éste al cargarse al final, te sobreescribe la orden inicial y volverás a tener ese problema.
También puedes usar directamente el Custom CSS del Personalizador, pero yo no lo recomiendo porque guarda el CSS en la bases de datos y no es lo mejor. Pero para probar te puede valer perfectamente.
Mira a ver si con eso te vale y si no dame más datos para ver qué estás haciendo e intento echarte una mano.
¡Muchas gracias por comentar!
Hola, gracias por responder.
Había leído que no se puede hacer una tema child de un plugin, como sí se hace del tema.
El código al que me refiero es .php, ójala fuera css jeje, entonces no habría problema :
background-size:cover;
este código está dentro del .php del plugin, por lo que si uso un functions que pongo en el child theme, me remito a la pregunta anterior ¿cómo indico que el php afecte al plugin situado en la carpeta / plugin etc. que quiero? por no repetirme, sería la consulta de antes, no sé si es posible.
Gracias
El código en cuestión es:
(he tenido que borrar símbolos porque al comentar lo ha hecho desaparecer):
? php if ( ! empty ($ bacgrnd_img) : ?
background-size:cover !important;
? php endif ;
Buenos dias!! He caido en una web-franquicia muy limitada. No puedo ni acceder ni modificar el codigo, y tiene bastantes carencias.
Si lo sé, me explico como un libro cerrado y del reves.
La cosa esq mi supermente ha pensado; ” oye y si les paso a los franquiciadpres un ¿plugin? Con el que consiga que sin afectar el funcionamiento interno, pueda mostrar al cliente lo que yo quiero?? Algo así como, tengo un android, debe funcionar como Android (internamente) pero el cliente vera y se manejara aparentemente como si fuera Iphone.
Eso es posible?
Necesito que mi web pueda tener la opción de USUARIO INVITADO, Ordenar los articulo por precio, stock, novedades, Reconfigurar la estética (al ser franquicias, somos unos 100 con el mismo tipo de web), añadir una ventana ABOUT US,
Crees que podría conseguirlo sin tener ni papa, o encontrar alguien que lo haga¿?
Acepto recomendaciones