¿Qué representa el token %1$s en WordPress?

16 feb 2018, 21:50:01
Vistas: 23.5K
Votos: 6

He visto el token %1$s y otros similares con más frecuencia en el código de WordPress últimamente, pero no logro entender qué significa. Aquí un ejemplo:

sprintf( __( '%1$s está obsoleto. Use %2$s en su lugar.' ),

¿Alguien sabe qué significa?

1
Comentarios

es utilizado por sprintf, mira aquí: https://secure.php.net/sprintf

mmm mmm
16 feb 2018 22:03:56
Todas las respuestas a la pregunta 2
0
15

Lee la documentación de PHP sobre sprintf().

  • %s es simplemente un marcador de posición para una cadena de texto
  • %d es simplemente un marcador de posición para un número

Así que un ejemplo de sprintf se vería así:

$variable = sprintf(
    'El %s corrió por la %s',   // Cadena con marcadores de posición
    'perro',      // Se coloca en el primer marcador %s
    'calle'       // Se coloca en el segundo marcador %s
);

Lo cual devolverá una cadena a nuestra variable $variable:

El perro corrió por la calle

Al numerar los marcadores de posición, es una forma amigable para el desarrollador de identificar rápidamente qué cadena seguirá en cada lugar. También nos permite reutilizar una cadena. Veamos otro ejemplo con marcadores numerados:

$variable = sprintf(
    'El %1$s corrió por la %2$s. La %2$s estaba hecha de %3$s',    // Cadena con marcadores de posición
    'perro',      // Siempre se usará en el marcador %1$s
    'calle',      // Siempre se usará en el marcador %2$s
    'grava'       // Siempre se usará en el marcador %3$s
);

Lo cual devolverá una cadena a nuestra variable $variable:

El perro corrió por la calle. La calle estaba hecha de grava

Finalmente, la función __() nos permite traducir las cadenas que se le pasan. Al pasar marcadores de posición a __() y luego pasar toda esa cadena a sprintf(), podemos traducir lo que se pase a la función de traducción, lo que nos permite hacer que nuestra cadena y aplicación sean un poco más dinámicas.

16 feb 2018 22:09:00
0

No es algo específico de WordPress, es algo de PHP. %1$s, %2$s, etc., son marcadores de posición para variables en una cadena formateada devuelta por sprintf() (o impresa por printf()).

El 1$ indica que es la primera variable, 2$ sería la segunda, y así sucesivamente. La s indica que es una variable de tipo string (cadena de texto). Existen otras opciones (por ejemplo, d indicaría un número entero).

El ejemplo que das está incompleto: sin duda es algo así en su totalidad:

sprintf( __( '%1$s está obsoleto. Usa %2$s en su lugar.' ),
$string_1,
$string_2 );
16 feb 2018 22:05:45