¿Hay algún archivo global functions.php que funcione para cualquier tema?

11

¿Hay algún tipo global de archivo functions.php que funcione para cualquier tema?

El problema está aquí:

Cuando cambio un archivo functions.php en cualquier tema, necesito ocuparme de dos cambios: Primero, necesito ocuparme de las actualizaciones de ese tema. En segundo lugar, debo encargarme de cambiar el tema del sitio.

Entonces, en lugar de hacer cambios en las funciones.php de un tema, ¿es posible hacer cambios en el archivo functions.php que es independiente de cualquier tema?

Mert Nuhoglu
fuente
44
¿Es realmente necesaria la recompensa? La pregunta ya tiene buenas respuestas
Onetrickpony
Como @Mohit Bumb fue quien dio a) la recompensa yb) fue el primero que sugirió usar un complemento, yo diría que él debería ser quien obtenga los puntos de repetición (de regreso). OMI una recompensa no era necesario (y supongo que no sabía que tenía que realmente darle de distancia ).
kaiser

Respuestas:

15

La diferencia entre el código temático y el no temático es organizativo más que técnico. Cualquier código que esté activo contribuye al entorno resultante, no importa de dónde se cargue.

Hay varios lugares desde donde se carga el código, que no son parte del núcleo de WordPress:

  • wp-config.php archivo de configuración
  • tema activo (y su padre para temas secundarios)
  • complementos activos
  • debe usar complementos
  • drop-ins (estos son algo avanzados y sirven para propósitos muy específicos)

El lugar típico para su propio código, que no debería ser parte del tema, es crear un complemento. Otros enfoques no tienen beneficios del caso genérico, pero pierden las ventajas de la interfaz (gestión a través del área de administración) y técnica (eventos de activación / desactivación / desinstalación) del complemento normal.

Rarst
fuente
+1 tanto para ti como para @kaiser. Creo que la respuesta correcta es 1) Crear un tema secundario para albergar la funcionalidad personalizada functions.php, o 2) crear un complemento personalizado para albergar esa funcionalidad, de modo que sea portátil entre varios temas.
Chip Bennett
@Chip ya que la pregunta hace referencia a la preservación del código cuando se cambian los temas. ¿Qué sucede si desea cambiar al tema que es el tema hijo? El complemento es el más apropiado para los requisitos dados.
Rarst
Es por eso que los voté a ambos. :) Pero, aún puedes usar un Tema Infantil al cambiar de Temas; simplemente cambie la Template:etiqueta apropiadamente en el tema infantil style.css.
Chip Bennett
@Chip no entendiste mi punto. ¿Qué pasa si quiero usar el tema infantil? Creo un tema infantil para Twenty Eleven con mi código. Entonces quiero cambiar al tema que también es tema secundario de Twenty Eleven (u otro padre). No tengo ninguna ruta, aparte de fusionar manualmente dos temas secundarios. Luego, desunir la próxima vez que cambie el tema. Es un desastre.
Rarst
Utilizo must-use para esto. Creo que es una forma rápida y directa de agregar funciones, ganchos y códigos cortos disponibles para usar en todos los temas
chiliNUT
6

Bueno, ese es un problema real y muchas personas lo enfrentan cuando cambian de tema, pero hay soluciones simples.

agregue esa función a una nueva página, no functions.php y asígnele un nombre único, por ejemplo, yousitename + marca de tiempo o lo que quiera, pero la carpeta de creación única con el mismo nombre lo comprimió y lo cargó como un complemento, por lo que seguramente funcionará hasta que lo desactive .

Para entender qué plugin es para lo que no se pierde, dale nombre a ese plugin como:

/*
Plugin Name: XYZ
*/
Mohit Bumb
fuente
3

Como una adición a la respuesta @MBTheDeveloper.

Otras opciones serían:

  1. Cree un tema secundario para su tema actual y use el archivo functions.php de este (esta es la "mejor práctica").
  2. Utilícelo includeen el archivo php de la función de temas y cargue un archivo custom-function.php que contenga su código personalizado.
emperador
fuente
2

No realice cambios específicos en su sitio en el archivo functions.php del tema.

En su lugar, cree un complemento específico del sitio. Me gusta usar el nombre de dominio del sitio, como "ottopress.com". Luego, coloque sus fragmentos en ese complemento y déjelo activo solo en ese sitio.

Alternativamente, cuando tenga un fragmento de cambios relacionados, cree un complemento específico solo para ellos. Eso le da la opción de activar / desactivar los bits de código relacionados según sea necesario.

Otón
fuente
2

Alguna explicación

Primero debe comprender el propósito de functions.php en un tema. Functions.php es básicamente un archivo de complemento sin ningún nombre que, si está presente, Wordpress lo carga automáticamente. Wordpress carga la función.php de su tema actual para las páginas frontales de WordPress y también para las páginas administrativas (admin).

No hay diferencia entre un complemento y funciones.php, excepto que los complementos tienen nombre y pueden activarse / desactivarse independientemente de otros complementos y temas. El archivo funtions.php se adjunta con su tema actual y, si cambia a otro tema, Wordpress usa las funciones del nuevo tema.php y no sus antiguas funciones.php con modificaciones personalizadas.

Las actualizaciones de temas también sobrescriben functions.php y no hay forma de evitarlo, incluso si coloca sus modificaciones personalizadas en archivos de código separados y los incluye en fucntions.php, deberá agregar esa línea de inclusión después de cada actualización.

Generalmente el tipo de código que debería ir en functions.php:

  • funciones que se utilizan en los archivos de plantilla de su tema.
  • Opciones de tema
  • barras laterales
  • menús de navegación
  • formatos de publicación
  • publicar miniaturas
  • cualquier código que solo esté relacionado con el tema actual.

Como desea conservar sus modificaciones personalizadas incluso si cambia de tema. Debido a que el tema hijo no funcionará en este caso, ya que cambiará el tema y las funciones.php del tema hijo no se utilizarán.

La solución

La única solución recomendada por @Otto es crear un archivo de complemento. El enfoque que puede tomar para crear el complemento específico de su sitio es crear una carpeta con su nombre de sitio en 'wp-content / plugins' y crear archivos de complemento en él.

¿Por qué los archivos de complemento? y no solo archivo de complemento.

Agrupe la funcionalidad del sitio relacionado con el código en archivos de complementos separados y no olvide agregar el encabezado del complemento en todos sus archivos de complemento para que Wordpress los reconozca como complementos separados. Entonces tendrá la capacidad de activar / desactivar diferentes características / funcionalidades de su sitio sin romper todo.

Hameedullah Khan
fuente