---
title: "Añadir snippets de código PHP a WordPress de la manera correcta"
url: https://caribdis.net/2020/10/31/anadir-snippets-de-codigo-php-a-wordpress-de-la-manera-correcta/
date: 2020-10-31
modified: 2020-10-31
lang: es
author: "Firsh"
description: "Queremos presentarles la mejor manera de añadir snippets de código PHP a sus sitios. ¿Alguna vez recibieron como respuesta “pega lo siguiente en el archivo functions.php”, junto con una porción..."
categories:
  - "Consejos"
tags:
  - "autores invitados"
  - "código PHP"
  - "plugin"
image: https://caribdis.net/wp-content/uploads/2020/10/snippets-php.jpg
word_count: 925
---

# Añadir snippets de código PHP a WordPress de la manera correcta

Queremos presentarles la mejor manera de añadir *snippets* de código PHP a sus sitios. ¿Alguna vez recibieron como respuesta “pega lo siguiente en el archivo `functions.php`”, junto con una porción de código? Ese es el peor consejo que se puede dar, y al echar un vistazo más allá de la superficie entenderán el por qué.

### Añadir snippets de código PHP al archivo functions.php del tema hijo

Queremos desechar de inmediato la idea y decir que no tocaríamos el archivo `functions.php` original ni con un palo. Ese archivo es del **tema principal** en uso. Se actualizará o eventualmente reemplazará. ¿Saben qué pasaría entonces? Todos los códigos PHP personalizados **se pierden**. Además, estarían metiéndose con un archivo que ya tiene un montón de código necesario, puesto ahí por el desarrollador por una razón. Eso no está bueno.

Por lo tanto, ya que el archivo `functions.php` es un lugar perfectamente correcto para los *snippets* de código PHP, querrán usar un **tema hijo** para tal propósito. Un tema hijo es algo que coexiste con el tema principal. El objetivo fundamental es darnos un lugar para las modificaciones, por lo general de estilos y funciones personalizadas. Entonces, ¿cómo ponemos manos a la obra con un tema hijo?

- ¿El tema ya viene con un tema hijo? ¿Los autores ofrecen uno? Bien, finalmente podrán hacer uso de él. **Instálenlo**.
- Si no, siempre se puede usar el plugin [Childify Me](https://es.wordpress.org/plugins/childify-me/) para crearlo.
- En el caso de que se consideren aventureros, como nosotros, creen el suyo propio a mano, siguiendo [las instrucciones](https://codex.wordpress.org/es:Temas_hijos).

Asegúrense de que el tema hijo tenga un archivo `functions.php` esencialmente vacío, y añadan el código personalizado allí. Se recomienda usar un pequeño `/* comentario */` como encabezado de los *snippets* donde se pueda describir de qué trata el código y así reconocerlo en el futuro. Puede ser un código que se usará independientemente del tema. Por eso, si algún día cambian de tema, el código podría ser aplicado allí también. Lo mejor es que **sobrevivirá a las actualizaciones** del tema principal. Vale mencionar que este archivo está pensado para servir a un tema y su contenido está relacionado con ese tema.
![Archivo functions.php](https://caribdis.net/wp-content/uploads/2020/10/archivofunctions.png)

### Archivo functions.php estructurado

No sería el eslogan de **Let’s WP** si no les dijéramos cómo hacerlo. Aunque la sección anterior era correcta, nos gusta ir un paso más adelante, al altar de la estructuración. Nos dimos cuenta de que agregamos tantos *snippets* de código PHP a nuestro archivo `functions.php`, que se incrementó en miles de líneas. Si tienen alguna **ambición de desarrollador**, les recomendamos lo siguiente.

Pongan todos los *snippets* que hacen tareas similares, en archivos PHP separados, dentro de una carpeta del tema hijo (`/includes/` sería un nombre estándar). Solo inclúyanlos en el archivo `functions.php` del tema hijo, de esta manera:
<?php
$dir = get_stylesheet_directory();
/**
* Añadir botón de resaltado de código en TinyMCE.
*/
include_once( $dir . '/includes/lwp-tinymce.php' );

Definan un patrón de agrupación que les asegure que abren el archivo correcto para encontrar el *snippet* que están buscando. Nosotros usamos archivos para propósitos de “cosmética general”, para la carga diferida, o para el indicador de dificultad. En seguida notarán que estos archivos son como **pequeños plugins**. Y esto no se aleja mucho de nuestra idea.

### Crear un pequeño plugin con los snippets de código PHP

¿Listos para adentrarse en el mundo del desarrollo de plugins? Un plugin de WordPress no tiene por qué ser esa cosa grande y complicada por la que pagamos o nos descargamos del repositorio oficial. Caray, que ni siquiera necesita de una carpeta. Como alternativa, varios plugins hasta pueden residir en la misma carpeta de plugins. Es solo un pequeño archivo PHP con un puñado de *snippets*. Así que la próxima, pueden experimentar agregando los *snippets* de código PHP como plugin.

No hace falta estudiar la lección completa para [escribir un plugin](https://codex.wordpress.org/es:Escribiendo_un_Plugin). Por suerte, lo único que se necesita realmente para convertir un archivo PHP en un plugin es añadir las [cabeceras del plugin](https://developer.wordpress.org/plugins/the-basics/header-requirements/). Completen las cabeceras con alguna información relevante, que aparecerá en la lista de plugins. Para su conveniencia, aquí presentamos lo mínimo indispensable para comenzar un plugin:
<?php
/*
Plugin Name: Nombre corto para el snippet
Description: Describir aquí para qué sirve el snippet
*/

Hasta la descripción es opcional, pero siempre tiene sentido escribir una, así sabremos en el futuro de qué van esos códigos. ¿Quién hubiera pensado que eso es suficiente para hacer de un *snippet* un plugin? Por supuesto, el archivo debe ir en la carpeta /wp-content/plugins/, pero ¡eso sería todo! De aquí en más y gracias a esto, los *snippets* sobrevivirán también a los cambios de tema. En la lista de plugins se puede activar o desactivar cada *snippet* para el que hayan hecho un plugin separado.

No hará falta instalar plugins de terceros para gestionar los *snippets*. Aunque todo el mundo es libre de usarlos, para nosotros es un “gasto innecesario”.

### Que los plugins “imprescindibles” carguen los snippets

Los MU Plugins, o plugins imprescindibles, son especiales. Estos **se ejecutan antes de cualquier otro plugin**, y también en una instancia anterior al proceso que genera el sitio para el visitante. Estos plugins hasta tienen el poder de [desactivar o activar los plugins normales en páginas específicas](https://letswp.justifiedgrid.com/disable-a-wordpress-plugin-specific-pages/). No se pueden desactivar (ni aun por accidente) desde la lista de plugins. Los MU Plugins cargan automáticamente en todos los sitios de la red, si es que usamos instalaciones multisitio.
> **Nota de la admin**: Esta entrada fue publicada originalmente el 2 de octubre de 2018 en el blog [**Let’s WP**](https://letswp.justifiedgrid.com/php-code-snippets-wordpress/), y actualizada el 19 de febrero de 2020.