web-dev-qa-db-fra.com

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

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

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?

10
Mert Nuhoglu

La différence entre le code de thème et le code de non-thème est organisationnelle plutôt que technique. Tout code actif contribue à l'environnement résultant, peu importe d'où il est chargé.

Il existe un certain nombre d'emplacements d'où le code est chargé, qui ne font pas partie du noyau de 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 d'avantages du cas générique, mais confisquent l'interface (gestion via la zone d'administration) et les commodités techniques (événements d'activation/désactivation/désinstallation) du plug-in normal.

14
Rarst

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.

ajoutez cette fonction à une nouvelle page et non à 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. .

Pour comprendre quel plugin est pour quoi ne manquez pas de donner un nom à ce plugin comme:

/*
Plugin Name: XYZ
*/
6
Mohit Bumb

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 (il s'agit de la "meilleure pratique").
  2. Utilisez include dans votre fichier php de la fonction themes et chargez un fichier custom-function.php contenant votre code personnalisé.
3
kaiser

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 connexes, créez un plug-in spécifique pour elles. Cela vous donne la possibilité d'activer/désactiver les bits de code liés selon vos besoins.

2
Otto

Quelques explications

Vous devez d’abord 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 attaché à votre thème actuel. Si vous passez à un autre thème, Wordpress utilisera 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'y a aucun moyen de l'é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.

Généralement le type de code qui devrait aller dans functions.php:

  • fonctions utilisées dans les fichiers de modèles de votre thème.
  • options du thème
  • barres latérales
  • menus de navigation
  • formats de post
  • poster des vignettes
  • tout code qui est uniquement lié 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 basculerez le 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 plugin. L’approche que vous pouvez adopter pour créer votre plug-in spécifique au 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 plugin? et pas un seul fichier plugin.

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

2
Hameedullah Khan