¿Cuál es el método más eficiente para cargar widgets en functions.php

2

He visto a los desarrolladores de WordPress usar dos métodos diferentes para cargar widgets personalizados desde el archivo functions.php.

El primero:

include("functions/my-custom-widget.php");

El segundo:

require_once(dirname(__FILE__) . "/functions/my-custom-widget.php");

Cuál de estos métodos es más eficiente. Estoy particularmente interesado en el rendimiento si hay alguna diferencia. ¿Require_once sigue mejores "mejores prácticas"?

Estoy seguro de que hay muchas otras formas de hacer esto. Si alguien tiene una mejor recomendación, me encantaría escucharla.

Gracias.

    
pregunta derekshirk 05.06.2012 - 11:06

2 respuestas

5

Ambos son aceptables pero no recomendados. Use locate_template() porque un tema secundario puede sobrescribir el archivo cargado.

Ejemplo:

$found = locate_template( 'functions/my-custom-widget.php', TRUE, TRUE );

El primer TRUE le dice a WordPress no solo que busque el archivo, sino que lo cargue en realidad. El segundo lo convierte en una llamada require_once .

La función devuelve la ruta al archivo localizado en caso de que la necesite más adelante. Si no se encuentra nada, devuelve una cadena vacía.

    
respondido por el fuxia 05.06.2012 - 11:45
2

require_once ( documentación de PHP )

  

comprobará si el archivo ya se ha incluido y, de ser así, no lo incluirá (requerirá) nuevamente.

Esta verificación llevará más tiempo. Si sabe lo que está haciendo (incluido), debe deshacerse de la parte _once y ahorrar tiempo.

EDITAR: no verás la diferencia con solo unos pocos archivos. Pero si no incluye muchos archivos, no arruinará su inclusión / requerirá una cosa tan simple como un tema WP, por lo que, en mi humilde opinión, no tiene sentido prevenir varias llamadas al mismo archivo.

Sobre la diferencia entre require() y include() :

  

require es idéntico a include , excepto en el caso de que falle, también producirá un error de nivel E_COMPILE_ERROR fatal.
  En otras palabras, detendrá el script, mientras que include solo emite una advertencia (E_WARNING) que permite que el script continúe.

    
respondido por el FelipeAls 05.06.2012 - 11:31

Lea otras preguntas en las etiquetas