Ce face add_shortcode
Un shortcode este un marcaj între paranteze drepte pe care autorul îl scrie în conținut. Când WordPress îl întâlnește, cheamă funcția înregistrată cu add_shortcode() și pune în loc textul întors de ea. Funcția primește trei argumente: atributele ($atts), conținutul dintre etichete ($content, null dacă lipsește) și numele shortcode-ului.
Funcția trebuie să ÎNTOARCĂ textul, nu să-l afișeze cu echo. Pentru atribute cu valori implicite folosești shortcode_atts(), care păstrează doar atributele cunoscute. Numele atributelor ajung mereu cu litere mici.
Un nume de shortcode poate avea o singură funcție: dacă două pluginuri înregistrează același nume, câștigă ultimul încărcat. De aceea e bine să folosești un prefix. Numele nu poate conține spații sau caracterele & / < > [ ] =. Într-un șablon PHP rulezi un shortcode cu do_shortcode().
Parametri
| Parametru | Descriere |
|---|---|
$tag |
Numele shortcode-ului căutat în conținut (de exemplu 'dex_pret'). |
$callback |
Funcția chemată: primește $atts, $content și $shortcode_tag și întoarce un șir. |
Ce returnează
Nimic. Funcția ta (callback-ul) întoarce textul care înlocuiește shortcode-ul.
Exemple
Exemplul 1: Shortcode cu atribute și valori implicite
În conținut autorul scrie [dex_pret valoare="25"]; moneda lipsă primește valoarea implicită „lei”.
<?php
add_shortcode( 'dex_pret', 'dex_shortcode_pret' );
function dex_shortcode_pret( $atts ) {
$atts = shortcode_atts(
array(
'valoare' => '0',
'moneda' => 'lei',
),
$atts,
'dex_pret'
);
return '<span class="pret">' . esc_html( $atts['valoare'] . ' ' . $atts['moneda'] ) . '</span>';
}
Ce afișează pagina
<span class="pret">25 lei</span>
Exemplul 2: Shortcode cu conținut între etichete
Pentru [dex_nota]Comenzile se ridică din Iași.[/dex_nota], textul dintre etichete vine în $content.
<?php
add_shortcode( 'dex_nota', 'dex_shortcode_nota' );
function dex_shortcode_nota( $atts, $content = null ) {
if ( null === $content ) {
return '';
}
return '<div class="nota">' . wp_kses_post( $content ) . '</div>';
}
Ce afișează pagina
<div class="nota">Comenzile se ridică din Iași.</div>
Greșeli frecvente
- Folosești
echoîn funcția shortcode-ului: textul apare în altă parte a paginii (de obicei deasupra conținutului). Întoarce șirul cureturn. - Scrii atributul cu majuscule (
valoareMax) și îl cauți la fel în cod: WordPress îl transmite cavaloaremax. - Pui atributele direct în HTML fără escaping; ele vin de la autor și pot conține ghilimele sau etichete.
- Alegi un nume generic (
pret) care intră în conflict cu shortcode-ul altui plugin.
Comenzi înrudite
the_content: Filtrul prin care trece conținutul unui articol după ce este citit din baza de date și înainte de a fi afișat.esc_html: Escapează textul pentru afișare în HTML: transformă < > & și ghilimelele în entități, ca să nu fie interpretate ca cod.wp_kses: Păstrează doar etichetele și atributele HTML permise și elimină restul (scripturi, atribute on*, protocoale nesigure).add_filter: Leagă o funcție de un filtru: WordPress îi dă o valoare, iar funcția întoarce valoarea modificată.