Funcionalidad Plugins vs Temas

Hay muchos factores que influyen en el rendimiento de su sitio de WordPress, y uno de los trucos que los "expertos" a menudo le dicen que haga es evitar los complementos. Le dirán que es mejor colocar la funcionalidad dentro de su tema, en lugar de activar un complemento. Es esto cierto?


Introducción

Cuando se trata del rendimiento de su sitio de WordPress, hay muchos factores que influyen en los resultados generales. Estos factores incluyen qué tan bien está escrito su tema, la cantidad de imágenes y otros recursos que deben cargarse, qué tan bien se almacena en caché su sitio, la calidad de sus complementos activados y muchos más. Sin embargo, dos factores que tienen un impacto nulo en el nivel de rendimiento de su sitio es la cantidad de complementos (sí, lo digo en serio) y si existen piezas de funcionalidad como complemento o parte de su tema..

Si haces una búsqueda rápida en Google para "Cómo agregar un formulario de contacto a WordPress", probablemente notará una gran tendencia cuando se trata de títulos de tutoriales. La mayoría de los tutoriales incluirán algo como"... sin un plugin". Esta tendencia, que existe para docenas de temas tutoriales, trae a la mente la idea de que los complementos deben ser malos y posiblemente perjudiquen el rendimiento de su sitio. Tener las palabras"sin un plugin"tan común en los títulos de los tutoriales, así como en las publicaciones de los foros, muchas personas creen que es mejor, especialmente para el rendimiento, incluir piezas de funcionalidad dentro de los temas (ya sean propios o comprados) en lugar de confiar en un plugin para proporcionarlo.

La primera respuesta que tengo a esta creencia común es que es completamente infundada y, en realidad, completamente incorrecta. Hay varios aspectos de la razón por la que esta creencia es errónea, y los analizaré punto por punto. También me referiré brevemente a la creencia de que menos complementos son mejores, lo que también es (por lo general) totalmente incorrecto..


Creencias comunes

1. La funcionalidad se coloca mejor en un tema que en un complemento

La idea detrás de esta creencia es que los complementos son a menudo la fuente de problemas en su sitio, ya sea porque están mal escritos o porque están en conflicto con algo en su tema. Si los complementos son a menudo malos, entonces tiene sentido que es mejor colocar la funcionalidad (como los formularios de contacto) dentro del tema, ¿verdad??

Mal, y aquí es por qué:

"Ya sea que el código se cargue en el punto Y o en el punto X, no es más eficiente".

Primero, la única diferencia entre el código que se coloca en un tema y el código que se coloca en un complemento es el momento de la ejecución. Los complementos activos se cargan y ejecutan antes del tema actualmente activo, pero aparte de eso, hay una diferencia cero en la forma en que se ejecuta el código contenido dentro de cada uno, y también una diferencia cero en cuanto a la eficiencia del código. Si desea un gran diagrama del proceso de carga principal de WordPress, consulte esta publicación de Stack Exchange.

Si el código se carga en el punto Y o en el punto X, no es más eficiente.

Segundo, con el punto número 1, ahora tenemos que preguntar "¿Cómo es un tema el mejor lugar para la funcionalidad??", dado que tanto el código del plugin como el código del tema se ejecutan de la misma manera. La respuesta es simple. Si bien los temas no tienen ningún beneficio sobre los plugins cuando se considera dónde colocar las funciones, resulta que los plugins tienen un par de ventajas significativas sobre los temas . Voy a caminar a través de estas ventajas en un momento.

2. El código en los temas funciona mejor que en los complementos

Realmente no sé de dónde viene esto, aunque sospecho que tiene que ver con el hecho de que las personas a menudo tienen miedo de los complementos, y con frecuencia escuchan que los complementos causan problemas de rendimiento en un sitio. El hecho del asunto es que esta creencia es ridícula en el mejor de los casos. Como se indicó anteriormente, hay una diferencia cero (excepto la sincronización) en la forma en que se ejecuta el código del complemento, en comparación con el código del tema.

Si coloca una función en un complemento, la ejecuta, registra el tiempo y luego hace lo mismo con la función, pero mientras se coloca en el tema, encontrará que hay una diferencia cero. Ambos se ejecutan con la misma velocidad y ninguno tiene ninguna ventaja directa sobre el otro, en términos de rendimiento..

Esto plantea la pregunta entonces: ¿son los temas en última instancia mejores que los complementos para piezas de funcionalidad? La respuesta corta, no, absolutamente no..


Algunas razones por las que los complementos son mejores

Ahora deberíamos preguntar, ¿son los complementos en última instancia mejores para las funciones que para los temas? La respuesta corta, sí, la mayoría del tiempo definitivamente lo son. ¿Pero por qué? Bueno, hay algunas razones.

  1. Separar su código en "partes" es una de las mejores cosas que puede hacer para proyectos grandes, ya que hace que todo el proyecto sea mucho más fácil de mantener y depurar en el caso de un problema. Al colocar sus piezas separadas de funcionalidad en sus propios complementos dedicados, usted crea efectivamente estos "fragmentos". Cada complemento se mantiene por separado, lo que (como encontrará) puede hacer que sea infinitamente más fácil rastrear problemas.
  2. Si algo se rompe, simplemente desactiva el complemento. Supongamos que el formulario de contacto de su sitio está integrado en su tema y se rompe, lo que hace que el sitio se agote. ¿Qué haces? Si no tiene las habilidades o no sabe cómo reemplazar el formulario de contacto con uno que funcione, tiene un gran problema. Por otro lado, si la funcionalidad es proporcionada por un complemento, simplemente desactiva el complemento y vuelve a ponerlo en línea una vez que se solucione el problema, o si buscas uno nuevo.
  3. Si alguna vez desea cambiar temas, ya que la mayoría de los sitios lo harán al menos una o dos veces, perderá todas las funcionalidades personalizadas que tenga (incluidos los códigos cortos) porque el nuevo tema no tendrá las mismas funciones o se ejecutará / Constrúyelos de manera diferente. Sin embargo, si tienes todos tus códigos cortos dentro de un complemento, así como cosas como formularios de contacto, todo lo que tienes que hacer es cargar el nuevo tema y activarlo: todo seguirá funcionando igual que antes. ¿No es ese el motivo suficiente para decir que los complementos son mejores para las funciones separadas que los temas? Creo que es.
  4. Los complementos se pueden actualizar y mejorar por separado. Si agrega mejoras a un tema, entonces el tema completo debe actualizarse. ¿Cuántas veces ha visto a un usuario de un tema agregar personalizaciones al style.css o funciones.php? Si lo han hecho, es imposible para ellos actualizar el tema y obtener las nuevas mejoras sin mover manualmente todos sus cambios. Esto es asumiendo que no han creado un tema secundario, que deberían tener pero muchos usuarios no lo han hecho. Cuando las mejoras se colocan en un complemento, el usuario no tiene que hacer nada más que actualizar el complemento desde su Tablero.

Va más allá de estas cuatro razones, pero ya debería estar claro la enorme ventaja que tienen los complementos sobre los temas para funcionalidades separadas..

Esto ahora me lleva a la pregunta de si es malo tener muchos complementos diferentes. Probablemente pueda imaginar qué tan rápido se expandirá la cantidad de complementos activos si coloca cada pieza principal de funcionalidad en complementos separados. ¿Esto causa un problema? ¿Qué tal una vez que llegues a 10 plugins? ¿No es eso mucho? ¿Qué tal unos 20 o 30? No es eso extremo?

No.

Durante WordCamp Kansas City 2012, tuve la oportunidad de pasar un tiempo hablando con Otto, que es uno de los mejores desarrolladores de WordPress y también uno de los hombres de la mano derecha de Matt Mullenweg. Otto realiza la mayor parte del desarrollo en el sitio personal de Matt y me dijo que hay docenas de pequeños complementos de funcionalidad que se ejecutan en ese sitio. Cada uno de los complementos tiene tareas específicas y todos se ejecutan perfectamente uno al lado del otro, aunque hay muchos de ellos..

Personalmente ejecuto unos 50 complementos en mi sitio de Complementos de Pippin.

El punto es que los complementos no causan problemas de rendimiento simplemente porque son complementos, ni siquiera con 100 o incluso 200 activos al mismo tiempo. Los problemas de rendimiento con los complementos provienen de los que están mal escritos, no del número de complementos. Fácilmente podría causar más problemas de rendimiento con un solo complemento mal escrito que con 300 complementos simples y bien escritos.

Los problemas de rendimiento generalmente se reducen a la carga de recursos y la realización de consultas de base de datos, por lo que los complementos que hacen muchos de estos tienden a afectar el rendimiento. Los complementos que no realizan consultas en la base de datos o cargan recursos tienen cero (o casi cero) impacto en el rendimiento, y es por eso que puede ejecutar literalmente 300 complementos en su sitio sin ningún impacto..

También sé que WP Candy tiene más de 80 o 90 complementos activos en todo momento..

La clave a recordar es que la cantidad de complementos no tiene ningún impacto en el rendimiento, solo la calidad y el tipo de rendimiento de impacto del complemento..

El segundo punto clave a recordar es que el código en los complementos se ejecuta exactamente igual que el código en los temas, así que deshágase de la idea de que es mejor colocar la funcionalidad en su tema que un complemento. Se supone que los temas controlan los aspectos visuales de su sitio, no la funcionalidad.

El último punto a recordar es que los complementos solo son malos cuando están mal construidos. Los plugins en sí mismos nunca son intrínsecamente malos; solo son malos porque el código que compone el complemento es malo.