web-dev-qa-db-fra.com

Comment définir une variable globale dans functions.php

Je veux pouvoir faire écho à l’URL de l’image présentée dans un article. Après avoir regardé certains articles sur le Web, j’ai trouvé ce qui suit qui fonctionne bien lorsque je le mets en boucle dans mon modèle de page d’accueil.

<?php $thumbSmall = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'small' );
$urlSmall = $thumbSmall['0']; ?>

<?php echo $urlSmall; ?>

Cependant, je souhaite utiliser la variable $ urlSmall ailleurs que dans le modèle de page de garde, et c’est là que mes compétences limitées en matière de codage m'ont laissé tomber. J'ai essayé de copier

wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'small' );
$urlSmall = $thumbSmall['0'];

dans mon functions.php mais cela n'a pas fonctionné. J'ai besoin de ces variables pour être globalement reconnues. Qu'est-ce que je fais ici? écrire une sorte de fonction?

1
Josef Ulander

Vous pouvez transformer votre extrait de code en une fonction qui renvoie l'URL de miniature de publication d'une publication:

function wpse81577_get_small_thumb_url( $post_id ) {
    $thumbSmall = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), 'small' );
    return $thumbSmall['0'];
}

Utilisation, fournissant l'ID d'un message:

<?php echo wpse81577_get_small_thumb_url( 59 ); ?>
8
diggy

Pure PHP question, vraiment.

global $urlSmall;
$urlSmall = $thumbSmall['0'];

Si vous déclarez la variable avec le mot clé global lors de son initialisation, il sera disponible par la suite. Vous pouvez l'improviser, pour ainsi dire, avec ...

global $urlSmall;
var_dump($urlSmall);

Vous pouvez faire la même chose en assignant des clés/valeurs directement au tableau $GLOBALS.

$GLOBALS['urlSmall'] = $thumbSmall['0'];

Cela semble être la réponse la plus directe à la question:

J'ai besoin de ces variables pour être globalement reconnues. Qu'est-ce que je fais ici?

Il y a peut-être de meilleures façons de gérer les données.

3
s_ha_dum