Avevo un problema simile e dopo aver guardato attraverso il numero list of all WordPress filter hooks di Adam Brown, ho scoperto che esiste il gancio necessario (widget_title
, come indicato da pxl), ma che non esiste un hook per ottenere l'output di tutti i widget. Ho pensato di approfondire la soluzione che ha funzionato per me.
In teoria, l'hook widget_title
dovrebbe interessare tutti i widget del tuo blog, ma sono sicuro che alcuni widget di terze parti trascurino di includere la riga di codice necessaria per applicare qualsiasi filtro per i titoli, quindi non è infallibile. Ha funzionato per me, tuttavia, e può essere utilizzato per applicare "shortcode" personalizzato (più precisamente, in questo caso, "longcode") o sintassi ai titoli del widget. Ad esempio, volevo includere di tanto in tanto il codice html nei titoli dei miei widget, ma per impostazione predefinita, tutto il codice HTML viene rimosso. Così, al fine di essere in grado di aggiungere le cose come <em>
tag al testo in alcuni dei miei titoli, ho scelto una sintassi personalizzato: [[
invece di <
& ]]
invece di >
(ad es, [[em]]
e [[/em]]
) e poi creato una funzione in le funzioni del mio tema.php file da elaborare che la sintassi personalizzato e sostituirlo con il codice HTML equivalente:
function parse_html_widget_title($text) {
return str_replace(array('[[', ']]'), array('<', '>'), $text);
}
Poi ho aggiunto una linea di sotto di essa per aggiungere la funzione di filtro:
add_filter('widget_title', 'parse_html_widget_title', 11); // 11 is one above the default priority of 10, meaning it will occur after any other default widget_title filters
La funzionalità add_filter
/apply_filter
automaticamente passa il contenuto filtrato come primo parametro alla funzione specificata come filtro, quindi è tutto ciò che devi fare.
Per fare qualcosa di simile per l'output principale del widget, è necessario guardare tutti i widget per vedere quale hook usano e verificare che abbiano un filtro per l'output principale, rispetto a add_filter()
per ogni gancio che si trova con la funzione di richiamata personalizzata (ad esempio, è widget_text
per l'output del widget Testo o get_search_form
per il modulo di ricerca [lo si può vedere in wp-includes/general-template.php, nella funzione get_search_form()
]). Il problema è che alcuni dei widget generati dinamicamente non hanno ganci (come il widget Meta), motivo per cui la soluzione di buffer di output fornita da Jeff è la soluzione più versatile, sebbene non ideale.
non sono sicuro di quando hanno introdotto il filtro widget_text, forse non avevano in ' 09 quando questa domanda è stata inizialmente richiesta. Vedere il mio codice di esempio qui sotto nella mia risposta per un esempio di lavoro completo (e molto semplice). –