Uno degli errori commessi da molti sviluppatori durante la creazione di shortcode (in temi e plug-in) sempre caricamento di tutti gli script e stili. Per motivi di efficienza, e anche per prevenire meglio conflitti, script e stili dovrebbero solo essere caricato quando sono necessari. Questa è una funzione davvero utile che ti permetterà di eseguire qualsiasi azione tu voglia, come caricare script e stili, quando, e solo quando, un post ha uno shortcode particolare.
Le funzioni sono davvero piuttosto semplici. Tutto quello che faremo è passare un codice breve come parametro, quindi controllare il contenuto del post corrente per quel codice funzione
Puoi incollare questo codice nel tuo functions.php o il tuo file plugin.
// controlla il post corrente per l'esistenza di una funzione di codice breve has_shortcode ($ shortcode = ") $ post_to_check = get_post (get_the_ID ()); // false perché dobbiamo cercare attraverso il contenuto del post prima $ found = false; // se non è stato fornito alcun codice breve, restituisce false if (! $ shortcode) return $ found; // controlla il contenuto del post per il codice funzione if (stripos ($ post_to_check-> post_content, '['. $ shortcode) ! == false) // abbiamo trovato il codice breve $ found = true; // restituisce i nostri risultati finali return $ found;
La prima cosa che facciamo è passare un parametro alla funzione chiamata $ shortcode e lo impostiamo in bianco. Successivamente otteniamo l'oggetto post del post attualmente visualizzato. Lo facciamo usando la funzione get_post () per restituire l'oggetto post dell'ID dato, che otteniamo con get_the_ID (), dal database. Una volta memorizzato l'oggetto post in una variabile, $ post_to_check, possiamo cercare attraverso il suo contenuto per il codice corto specificato
Dopo aver recuperato l'oggetto post, abbiamo impostato il $ trovato variabile a false, quindi assicurati che $ shortcode parametro non è vuoto, e se lo è, si esce dalla funzione restituendo il $ trovato variabile come falso.
Ora siamo pronti per cercare tra i contenuti del post per il codice breve desiderato. Lo facciamo utilizzando la funzione stripos (). Questa funzione prende due parametri, la stringa in cui cercare (il pagliaio), e la stringa per cui cercare (il bisogno). Nel caso, il nostro pagliaio è il contenuto del post, a cui si accede con $ Post_to_check-> POST_CONTENT, e l'ago è il codice breve che abbiamo passato alla nostra funzione personalizzata come parametro. Si noti che abbiamo abbandonato la chiusura "]" del parametro dell'ago; questo perché abbiamo bisogno di prendere in considerazione i codici brevi che accettano i parametri, e quindi non avremo la parentesi di chiusura immediatamente dopo il nome del codice breve.
Se stripos () trova il codice breve, abbiamo impostato il $ trovato variabile su true e quindi restituire i nostri risultati. Questo è tutto, la nostra funzione è completa.
Questa funzione può essere utilizzata ovunque nei modelli del tema (non solo nel ciclo) ed è estremamente utile per il caricamento selettivo di script e stili.
Per verificare se il post corrente ha un codice funzione specifico, puoi utilizzare la funzione in questo modo:
if (has_shortcode ('your_short_code')) // esegui le azioni qui
Probabilmente uno dei luoghi più comuni che useresti questa funzione è nel tuo header.php quando carichi stili e script, in questo modo:
if (has_shortcode ('contactform')) wp_enqueue_style ('contactfom', get_bloginfo ('template_directory'). 'include / contactform.css'); wp_enqueue_script ('contactfom', get_bloginfo ('template_directory'). 'include / contactform.js');
Quando plug-in e temi che non utilizzano standard di codifica validi sono così abbondanti, è importante che ci sforziamo sempre di svilupparci con gli standard di alta qualità in mente, in modo da poter prevenire il maggior numero possibile di conflitti tra script e stile. Uno dei modi in cui possiamo farlo è caricando solo script / stili per i nostri codici brevi quando sono effettivamente necessari.
Leggi ulteriori informazioni sull'uso e sulla creazione di shortcode nei tuoi progetti qui!