web-dev-qa-db-fra.com

Que représente le jeton% 1 $ s dans WordPress?

J'ai vu le jeton% 1 $ et des objets similaires plus souvent dans le code WordPress, mais je ne peux pas comprendre ce que cela signifie. Voici un exemple:

sprintf( __( '%1$s is deprecated. Use %2$s instead.' ),

Est-ce que quelqu'un sait ce que cela signifie?

2
Martin

Lisez les docs PHP sur sprintf () .

  • %s est juste un espace réservé pour une chaîne
  • %d est juste un espace réservé pour un nombre

Ainsi, un exemple de sprintf ressemblerait à ceci:

$variable = sprintf(
    'The %s ran down the %s',   // String with placeholders
    'dog',      // Placed in the first %s placeholder
    'street'    // Placed in the second %s placeholder
);

Ce qui retournera une chaîne dans notre variable $variable:

Le chien parcourait la rue street

En numérotant les espaces réservés, c’est à la fois un moyen convivial pour les développeurs d’indiquer rapidement quelle chaîne sera placée à l’endroit suivant. Cela nous permet également de réutiliser une chaîne. Prenons un autre exemple avec des espaces réservés numérotés:

$variable = sprintf(
    'The %1$s ran down the %2$s. The %2$s was made of %3$s',    // String with placeholders
    'dog',      // Will always be used in %1$s placeholder
    'street',   // Will always be used in %2$s placeholder
    'gravel'    // Will always be used in %3$s placeholder
);

Ce qui retournera une chaîne dans notre variable $variable:

Le chien parcourait la rue street . Le rue était constitué de gravel

Enfin, la fonction __() nous permet de traduire les chaînes qui lui sont transmises. En passant les espaces réservés __(), puis en transmettant toute la chaîne à sprintf(), nous pouvons traduire tout ce qui est transmis à la fonction de traduction, ce qui nous permet de rendre notre chaîne et notre application un peu plus dynamiques.

8
Howdy_McGee

Ce n'est pas une chose WordPress, c'est une chose PHP. %1$s, %2$s, etc., sont des espaces réservés pour les variables dans une chaîne mise en forme renvoyée par sprintf() (ou imprimée par printf() ).

Le 1$ indique que c'est le premier variable, 2$ serait le deuxième, et ainsi de suite. La s indique qu'il s'agit d'une string variable. D'autres options existent (par exemple, d indiquerait un entier).

L'exemple que vous donnez est incomplet: c'est certainement quelque chose comme ceci dans son intégralité:

sprintf( __( '%1$s is deprecated. Use %2$s instead.' ),
$string_1,
$string_2 );
4
Pat J