Sto scrivendo un semplice plugin per WordPress che utilizza lo shortcode. Voglio che la pagina che contiene lo shortcode abbia tag specifici <meta>
. È possibile? E se è così, c'è un modo elegante per farlo?Usa il codice corto di WordPress per aggiungere i tag <meta>
So che posso aggiungere i tag <meta>
con l'hook wp_head
, ma voglio che il contenuto del meta tag corrisponda a una stringa prodotta dal plugin. Potrei spostare tutto il codice nell'intestazione, ma poi non sono sicuro di come fare riferimento più tardi dallo shortcode. In altre parole, quando dichiaro una variabile nel <head>
con un filtro, non è disponibile per i metodi di classe che sto chiamando con lo shortcode.
Qualche idea?
UPDATE:
stata proposta una soluzione piacevole in cui la funzione del gestore per shortcode aggiunge l'azione al gancio wp_head:
add_shortcode('fakeshortcode', 'fakeshortcode_handler');
function fakeshortcode_handler() {
function add_meta_tags() {
//echo stuff here that will go in the head
}
add_action('wp_head', 'add_meta_tags');
}
Questo è gonfiano, ma il problema è che wp_head accade PRIMA lo shortcode viene analizzato e aggiunge l'azione (quindi niente viene aggiunto alla testa con il codice sopra ALONE). Per farlo funzionare, ho preso in prestito la soluzione in this post. È fondamentalmente una funzione che "guarda avanti" nel post e vede se c'è qualche codice corto in arrivo. In tal caso, l'IT aggiunge lo add_action('wp_head'...
.
MODIFICA: Ho rimosso la mia domanda di follow-up su come passare la variabile. È una nuova domanda here.
È bello. Non mi ero reso conto che lo shortcode è stato analizzato PRIMA che le azioni wp_head siano avvenute. Darò una prova subito. Se hai ragione sono sicuro che risolverà bene il mio problema! – emersonthis
Il mio sospetto era corretto. Le azioni wp_head vengono attivate PRIMA che il codice corto venga analizzato. Quindi questa soluzione non funziona esattamente come descritto. TUTTAVIA, l'approccio può essere modificato ... [vedi il mio aggiornamento sopra] – emersonthis
Scusa Emerson, ho frainteso quello che stavi cercando di fare.NON è stato eseguito prima. Pertanto, ho modificato la mia soluzione per farlo funzionare correttamente. – Maxime