Existe-t-il un fichier global functions.php qui fonctionne pour n'importe quel thème?

10

Existe-t-il un type global de fichier functions.php qui fonctionne pour tous les thèmes?

Le problème est ici:

Lorsque je modifie un fichier functions.php dans un thème, je dois prendre en compte deux modifications: Tout d'abord, je dois prendre en charge les mises à jour de ce thème. Deuxièmement, je dois prendre soin de changer le thème du site.

Ainsi, au lieu d’apporter des modifications au fichier functions.php d’un thème, est-il possible d’apporter des modifications à certains fichiers functions.php indépendants de tout thème?

    
posée Mert Nuhoglu 09.10.2011 - 17:07

5 réponses

14

La différence entre le code de thème et le code de non-thème est plus organisationnelle que technique. Tout code actif contribue à l’environnement résultant, quel que soit le lieu de chargement.

Il existe un certain nombre d'emplacements d'où le code est chargé, qui ne font pas partie du noyau WordPress:

  • wp-config.php fichier de configuration
  • thème actif (et son parent dans les thèmes enfants)
  • plugins actifs
  • doit utiliser des plugins
  • drop-ins (ceux-ci sont assez avancés et servent des objectifs très spécifiques)

Un endroit typique pour votre propre code, qui ne devrait pas faire partie du thème, est de créer un plugin. D’autres approches n’offrent pas les avantages d’un cas générique, mais confirment l’utilité des interfaces (gestion via la zone d’administration) et techniques (activation / désactivation / désinstallation) du plug-in normal.

    
réponse donnée Rarst 16.10.2011 - 22:50
6

Eh bien, c’est un problème réel et de nombreux peuples y font face lorsqu’ils changent de thème, mais il existe une solution simple.

ajouter cette fonction à une nouvelle page, pas à functions.php et donnez-lui un nom unique, par exemple yousitename + timestamp ou ce que vous voulez, mais créez un dossier unique du même nom et envoyez-le sous forme de plug-in afin qu'il fonctionne sûrement jusqu'à ce que vous le désactiviez.

Pour comprendre quel plugin correspond à ce qui ne manque pas, donnez-lui un nom tel que:

/*
Plugin Name: XYZ
*/
    
réponse donnée Mohit Bumb 09.10.2011 - 19:06
3

En complément de la réponse @MBTheDeveloper.

Les autres options seraient:

  1. Créez un thème enfant pour votre thème actuel et utilisez le fichier functions.php de celui-ci ("pratique recommandée").
  2. Utilisez include dans le fichier php de votre fonction de thèmes et chargez un fichier custom-function.php contenant votre code personnalisé.
réponse donnée kaiser 09.10.2011 - 19:38
2

Ne modifiez pas spécifiquement votre site dans le fichier functions.php du thème.

Au lieu de cela, créez un plugin spécifique au site. J'aime utiliser le nom de domaine du site, comme "ottopress.com". Placez ensuite vos extraits dans ce plug-in et laissez-le actif sur ce site uniquement.

Sinon, lorsque vous avez un extrait de modifications liées, créez un plug-in spécifique pour elles. Cela vous donne la possibilité d’activer / désactiver les bits de code associés selon vos besoins.

    
réponse donnée Otto 17.10.2011 - 00:10
2

Quelques explications

Tout d’abord, vous devez comprendre le but de functions.php dans un thème. Functions.php est fondamentalement juste un fichier plugin avec n'importe quel nom qui, s'il est présent, est automatiquement chargé par Wordpress. Wordpress charge le fichier function.php de votre thème actuel pour les pages frontales de wordpress ainsi que pour les pages principales (admin).

Il n'y a pas de différence entre un plugin et functions.php sauf que les plugins ont un nom et qu'ils peuvent être activés / désactivés indépendamment des autres plugins et thèmes. Le fichier funtions.php est associé à votre thème actuel. Si vous passez à un autre thème, Wordpress utilise le fichier functions.php du nouveau thème et non votre ancien functions.php avec des modifications personnalisées.

Les mises à jour de thèmes écrasent également functions.php et il n’ya aucun moyen de les éviter, même si vous placez vos modifications personnalisées dans des fichiers de code distincts et que vous les incluez dans votre fichier fucntions.php, vous devrez ajouter cette ligne d’inclusion après chaque mise à jour. .

En général, le type de code devant figurer dans functions.php:

  • fonctions utilisées dans les fichiers de modèle de votre thème.
  • options de thème
  • sidebars
  • menus de navigation
  • formats de publication
  • publier des vignettes
  • tout code lié uniquement au thème actuel.

Comme vous voulez conserver vos modifications personnalisées même si vous changez de thème. Parce que le thème enfant ne fonctionnera pas dans ce cas, vous changerez de thème et le fichier functions.php du thème enfant ne sera pas utilisé.

La solution

La seule solution recommandée par @Otto est de créer un fichier de plugin. L’approche que vous pouvez adopter pour créer votre plug-in spécifique à un site consiste à créer un dossier avec votre nom de site dans «wp-content / plugins» et à y créer des fichiers de plug-in.

Pourquoi des fichiers plug-in? et pas un seul fichier plugin.

Regroupez les fonctionnalités du site liées au code dans des fichiers de plug-in distincts et n'oubliez pas d'ajouter l'en-tête du plugin dans tous les éléments. vos fichiers de plugins afin qu'ils soient reconnus par Wordpress en tant que plugins séparés. Vous pourrez alors activer / désactiver différentes fonctionnalités de votre site sans tout casser.

    
réponse donnée Hameedullah Khan 17.10.2011 - 12:25

Lire d'autres questions sur les étiquettes