Cosa rappresenta il token %1$s in WordPress

16 feb 2018, 21:50:01
Visualizzazioni: 23.5K
Voti: 6

Ho visto il token %1$ e simili più spesso nel codice WordPress ultimamente, ma non riesco a capire cosa significhi. Ecco un esempio:

sprintf( __( '%1$s è deprecato. Usa %2$s al suo posto.' ),

Qualcuno sa cosa significa?

1
Commenti

viene utilizzato da sprintf, guarda qui: https://secure.php.net/sprintf

mmm mmm
16 feb 2018 22:03:56
Tutte le risposte alla domanda 2
0
15

Leggi la documentazione PHP su sprintf().

  • %s è semplicemente un segnaposto per una stringa
  • %d è semplicemente un segnaposto per un numero

Quindi un esempio di sprintf apparirebbe così:

$variable = sprintf(
    'Il %s corse lungo la %s',   // Stringa con segnaposto
    'cane',      // Inserito nel primo segnaposto %s
    'strada'    // Inserito nel secondo segnaposto %s
);

Che restituirà una stringa alla nostra variabile $variable:

Il cane corse lungo la strada

Numerando i segnaposto è sia un modo amichevole per gli sviluppatori di capire rapidamente quale stringa seguente sarà posizionata dove, sia permette di riutilizzare una stringa. Facciamo un altro esempio con segnaposto numerati:

$variable = sprintf(
    'Il %1$s corse lungo la %2$s. La %2$s era fatta di %3$s',    // Stringa con segnaposto
    'cane',      // Sarà sempre usato nel segnaposto %1$s
    'strada',   // Sarà sempre usato nel segnaposto %2$s
    'ghiaia'    // Sarà sempre usato nel segnaposto %3$s
);

Che restituirà una stringa alla nostra variabile $variable:

Il cane corse lungo la strada. La strada era fatta di ghiaia

Infine, la funzione __() ci permette di tradurre le stringhe passate. Passando i segnaposto a __(), e poi passando l'intera stringa a sprintf(), possiamo tradurre qualsiasi cosa passata alla funzione di traduzione, permettendoci di rendere la nostra stringa e l'applicazione un po' più dinamiche.

16 feb 2018 22:09:00
0

Non è una cosa specifica di WordPress, è una funzionalità di PHP. %1$s, %2$s, ecc., sono segnaposto per variabili in una stringa formattata restituita da sprintf() (o stampata da printf()).

Il 1$ indica che è la prima variabile, 2$ sarebbe la seconda, e così via. La s indica che è una variabile di tipo stringa. Esistono altre opzioni (ad esempio, d indicherebbe un intero).

L'esempio che hai fornito è incompleto: sicuramente nella sua interezza è qualcosa del genere:

sprintf( __( '%1$s è deprecato. Usa %2$s invece.' ),
$string_1,
$string_2 );
16 feb 2018 22:05:45