Esiste un file funzioni.php globale che funziona con qualsiasi tema?


11

Esiste un tipo globale di file Functions.php che funziona con qualsiasi tema?

Il problema è qui:

Quando cambio un file Functions.php in qualsiasi tema, devo occuparmi di due modifiche: in primo luogo, devo occuparmi degli aggiornamenti di quel tema. In secondo luogo, devo occuparmi di cambiare il tema del sito.

Quindi, invece di apportare modifiche al function.php di un tema, è possibile apportare modifiche in alcuni file Functions.php che sono indipendenti da qualsiasi tema?


4
La taglia è davvero necessaria? La domanda ha già buone risposte
onetrickpony,

Dato che @Mohit Bumb è stato colui che ha dato a) la generosità eb) è stato il primo a suggerire di usare un plugin, direi che dovrebbe essere lui a ottenere i punti rep (indietro). IMO non era necessaria una taglia (e immagino che non sapesse che doveva effettivamente darlo via ).
Kaiser

Risposte:


15

La differenza tra codice tematico e non tematico è organizzativa piuttosto che tecnica. Qualsiasi codice attivo contribuisce all'ambiente risultante, non importa da dove viene caricato.

C'è un numero di posti da cui viene caricato il codice, che non fanno parte del core di WordPress:

  • wp-config.php file di configurazione
  • tema attivo (e relativo genitore per i temi figlio)
  • plugin attivi
  • deve usare plugin
  • drop-in (sono in qualche modo avanzati e servono a scopi molto specifici)

Il luogo tipico per il proprio codice, che non dovrebbe far parte del tema, è la creazione di un plugin. Altri approcci non hanno benefici dal caso generico, ma rinuncia all'interfaccia (gestione attraverso l'area di amministrazione) e ai vantaggi tecnici (attivazione / disattivazione / disinstallazione) del normale plugin.


+1 a te e a @kaiser. Credo che la risposta corretta sia 1) Crea un tema figlio per ospitare la funzionalità personalizzata functions.phpo 2) crea un plug-in personalizzato per ospitare quella funzionalità, in modo che sia portatile tra vari temi.
Chip Bennett,

@Chip poiché la domanda si pone sulla conservazione del codice quando si cambia tema non vedo il tema figlio come appropriato. Cosa succede se si desidera passare al tema che è tema figlio? Il plugin è più appropriato per determinati requisiti.
Rarst

ecco perché ho votato entrambi. :) Ma puoi sempre usare un tema figlio quando cambi tema; è sufficiente modificare il Template:tag in modo appropriato nei temi del bambino style.css.
Chip Bennett,

@Chip non hai capito il mio punto. Cosa succede se desidero utilizzare il tema figlio? Creo un tema figlio per Twenty Eleven con il mio codice. Quindi voglio passare al tema che è anche tema figlio di Twenty Eleven (o di un altro genitore). Non ho alcun percorso, a parte l'unione manuale di due temi figlio. Quindi, unendo la prossima volta, cambio tema. È un casino.
Rarst

Per questo uso un must. Trovo che sia un modo rapido e diretto per aggiungere funzioni, hook e shortcode disponibili per l'uso su tutti i temi
chiliNUT

6

Bene, questo è un vero problema e molte persone lo affrontano quando cambiano tema ma ci sono soluzioni semplici.

aggiungi quella funzione a una nuova pagina non funzioni.php e assegnagli un nome univoco, ad esempio yousitename + timestamp o qualunque cosa tu voglia, ma crea una cartella unica con lo stesso nome zippato e caricalo come plugin in modo che funzionerà sicuramente fino a quando non lo disabiliti .

Per capire quale plug-in è quello che non manca per dare il nome a quel plug-in come:

/*
Plugin Name: XYZ
*/

3

In aggiunta alla risposta di @MBTheDeveloper.

Altre opzioni sarebbero:

  1. Crea un tema figlio per il tuo tema attuale e usa il file Functions.php da questo (questa è "best practice").
  2. Usa includenel tuo file php la funzione temi e carica un file custom-function.php che contiene il tuo codice personalizzato.

2

Non apportare modifiche specifiche al tuo sito nel file Functions.php del tema.

Invece, crea un plug-in specifico per il sito. Mi piace usare il nome di dominio del sito, come "ottopress.com". Quindi inserisci i tuoi snippet in quel plug-in e lascialo attivo solo su quel sito.

In alternativa, quando hai uno snippet di modifiche correlate, crea un plug-in specifico solo per loro. Ciò ti dà la possibilità di attivare / disattivare i bit di codice correlati, se necessario.


2

Qualche spiegazione

Per prima cosa devi capire lo scopo di Functions.php in un tema. Functions.php è fondamentalmente solo un file plugin senza alcun nome che, se presente, viene automaticamente caricato da Wordpress. Wordpress carica la funzione.php del tuo tema attuale per le pagine front-end di wordpress e per le pagine back-end (admin).

Non c'è differenza tra un plug-in e funzioni.php tranne per il fatto che i plug-in hanno un nome e possono essere attivati ​​/ disattivati ​​indipendentemente da altri plug-in e temi. Il funtions.php è allegato al tuo tema attuale e se passi a un altro tema Wordpress usa le nuove funzioni.php del tema e non le tue vecchie funzioni.php con modifiche personalizzate.

Gli aggiornamenti del tema sovrascrivono anche funzioni.php e non c'è modo di evitarlo, anche se metti le tue modifiche personalizzate in file di codice separati e lo includi nel tuo fucntions.php, dovrai aggiungere quella riga inclusa dopo ogni aggiornamento.

Generalmente il tipo di codice che dovrebbe andare in Functions.php:

  • funzioni utilizzate nei file modello del tema.
  • opzioni del tema
  • barre laterali
  • menu di navigazione
  • formati di post
  • pubblicare anteprime
  • qualsiasi codice correlato solo al tema corrente.

Come vuoi conservare le tue modifiche personalizzate anche se cambi tema. Perché il tema figlio non funzionerà in questo caso in quanto si cambierà il tema e le funzioni.php del tema figlio non verranno utilizzate.

La soluzione

L'unica soluzione raccomandata da @Otto è quella di creare un file plugin. L'approccio che puoi adottare per creare un plug-in specifico per il tuo sito è quello di creare una cartella con il tuo sitname in 'wp-content / plugins' e creare al suo interno file di plug-in.

Perché i file plugin? e non un singolo file plugin.

Raggruppa le funzionalità del sito relative al codice in file di plug-in separati e non dimenticare di aggiungere l' intestazione del plug- in in tutti i tuoi file di plug-in in modo che vengano riconosciuti da Wordpress come plug-in separati. Avrai quindi la possibilità di attivare / disattivare diverse caratteristiche / funzionalità del tuo sito senza rompere tutto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.