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

11

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 n'importe quel thème, je dois m'occuper de deux modifications: d'abord, je dois m'occuper des mises à jour de ce thème. Deuxièmement, je dois prendre soin de changer le thème du site.

Ainsi, au lieu de modifier le fichier functions.php d'un thème, est-il possible de modifier certains fichiers functions.php indépendamment de tout thème?

Mert Nuhoglu
la source
4
La prime est-elle vraiment nécessaire? La question a déjà de bonnes réponses
onetrickpony
Comme @Mohit Bumb était celui qui donnait a) la prime et b) était le premier à suggérer d'utiliser un plugin, je dirais que c'est lui qui devrait obtenir les points de répétition (retour). OMI une prime n'a pas été nécessaire (et je suppose qu'il ne savait pas qu'il devait donner réellement loin ).
kaiser

Réponses:

15

La différence entre le code thématique et non thématique est d'ordre organisationnel 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'endroits à partir desquels le code est chargé, qui ne font pas partie du noyau WordPress:

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

L'endroit typique pour votre propre code, qui ne devrait pas faire partie du thème, est de créer un plugin. D'autres approches ne bénéficient pas du cas générique, mais des commodités d'interface (gestion via la zone d'administration) et techniques (événements d'activation / désactivation / désinstallation) du plugin normal.

Rarst
la source
+1 à vous et à @kaiser. Je crois que la bonne réponse est 1) Créer un thème enfant pour héberger les fonctionnalités personnalisées functions.php, ou 2) créer un plugin personnalisé pour héberger cette fonctionnalité, afin qu'il soit portable entre différents thèmes.
Chip Bennett
@Chip puisque la question demande de conserver le code lors du changement de thème. Je ne considère pas le thème enfant comme approprié. Que faire si vous souhaitez passer au thème enfant? Le plugin est le plus approprié pour des exigences données.
Rarst
c'est pourquoi j'ai voté contre vous deux. :) Mais, vous pouvez toujours utiliser un thème enfant lors du changement de thème; changez simplement la Template:balise de manière appropriée dans le thème enfant style.css.
Chip Bennett
@Chip vous n'avez pas compris mon point de vue. Et si je veux utiliser le thème enfant? Je crée un thème enfant pour Twenty Eleven avec mon code. Ensuite, je veux passer au thème qui est également le thème enfant de Twenty Eleven (ou d'un autre parent). Je n'ai pas d'autre chemin que la fusion manuelle de deux thèmes enfants. Puis dissociation la prochaine fois que je change de thème. C'est le bordel.
Rarst
J'utilise des incontournables pour cela. Je trouve que c'est un moyen rapide et direct d'ajouter des fonctions, des crochets et des codes courts disponibles pour une utilisation à travers les thèmes
chiliNUT
6

Eh bien, c'est un vrai problème et beaucoup de gens y font face lorsqu'ils changent de thème mais il existe des solutions simples.

ajoutez cette fonction à une nouvelle page pas functions.php et donnez-lui un nom unique, par exemple yousitename + timestamp ou tout ce que vous voulez, mais créez un dossier unique du même nom zippé et téléchargez-le en tant que plugin pour qu'il fonctionne sûrement jusqu'à ce que vous le désactiviez .

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

/*
Plugin Name: XYZ
*/
Mohit Bumb
la source
3

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

D'autres options seraient:

  1. Créez un thème enfant pour votre thème actuel et utilisez le fichier functions.php de celui-ci (c'est la "meilleure pratique").
  2. Utilisez includedans votre fichier php de fonction de thèmes et chargez un fichier custom-function.php qui contient votre code personnalisé.
kaiser
la source
2

N'apportez pas de modifications spécifiques à votre site dans le fichier functions.php du thème.

À la place, créez un plugin spécifique au site. J'aime utiliser le nom de domaine du site, comme "ottopress.com". Ensuite, mettez vos extraits dans ce plugin et laissez-le actif sur ce site uniquement.

Alternativement, lorsque vous avez un extrait des modifications associées, créez un plugin spécifique pour elles. Cela vous donne la possibilité d'activer / désactiver les bits de code associés selon les besoins.

Otto
la source
2

Quelques explications

Vous devez d'abord comprendre le but de functions.php dans un thème. Functions.php est fondamentalement juste un fichier de plugin sans aucun 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 front-end wordpress et les pages back-end (admin).

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

Les mises à jour de thème écrasent également functions.php et il n'y a aucun moyen de l'éviter, même si vous mettez vos modifications personnalisées dans des fichiers de code séparés et les incluez dans votre 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èle de votre thème.
  • Options du thème
  • barres latérales
  • menus de navigation
  • formats de publication
  • afficher les vignettes
  • tout code 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 car vous basculerez le thème et les fonctions.php du thème enfant ne seront pas utilisées.

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 plugin 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 plugins.

Pourquoi les plugins? et pas un seul fichier de plugin.

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

Hameedullah Khan
la source