Cum să setezi o variabilă globală în functions.php

15 ian. 2013, 01:02:27
Vizualizări: 46.4K
Voturi: 5

Vreau să pot afișa URL-ul imaginii reprezentative a unei postări și după ce am căutat pe internet am găsit următorul cod care funcționează bine când îl pun într-o buclă în șablonul paginii principale.

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

<?php echo $urlSmall; ?>

Cu toate acestea, vreau să folosesc variabila $urlSmall și în alte locuri decât în șablonul paginii principale, și aici este unde cunoștințele mele limitate de programare mă lasă baltă. Am încercat să copiez și să lipesc

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

în functions.php dar nu a funcționat. Am nevoie ca aceste variabile să fie recunoscute global. Ce trebuie să fac aici? să scriu un fel de funcție?

2
Comentarii

Aceasta este mai degrabă o întrebare despre PHP decât despre WordPress, după părerea mea

shea shea
15 ian. 2013 07:20:45

În sensul că...

Josef Ulander Josef Ulander
15 ian. 2013 20:49:49
Toate răspunsurile la întrebare 2
2

Puteți transforma fragmentul de cod într-o funcție care returnează URL-ul imaginii în miniatură a unui articol:

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

Utilizare, furnizând ID-ul unui articol:

<?php echo wpse81577_get_small_thumb_url( 59 ); ?>
15 ian. 2013 02:16:18
Comentarii

Super, dar cum obțin ID-ul postării în <?php echo wpse81577_get_small_thumb_url( 59 ); ?> dinamic, vreau să-l folosesc într-o buclă?

Josef Ulander Josef Ulander
15 ian. 2013 20:39:26

de exemplu wpse81577_get_small_thumb_url( $post->ID );, wpse81577_get_small_thumb_url( get_the_ID() );, ...

diggy diggy
15 ian. 2013 20:54:20
3

Întrebare pur PHP, într-adevăr.

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

Dacă declari variabila cu global keyword când o inițializezi, aceasta va fi disponibilă ulterior. O poți "importa", ca să zicem așa, cu...

global $urlSmall;
var_dump($urlSmall);

Poți face același lucru atribuind direct perechi cheie/valoare în array-ul $GLOBALS.

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

Aceasta pare a fi răspunsul cel mai direct la întrebarea:

Am nevoie ca aceste variabile să fie recunoscute global. Ce fac aici?

Totuși, pot exista metode mai bune de a gestiona datele.

15 ian. 2013 02:18:26
Comentarii

Ei bine, pare să funcționeze pentru mine! Dar s_ha_dum, cum aș putea obține ceva similar fără a folosi variabile globale

Josef Ulander Josef Ulander
15 ian. 2013 20:41:02

Scuze, greșeala mea, am fost prea rapid, nu a rezolvat problema mea. Când urmez sugestiile tale și pun global $urlSmall; var_dump($urlSmall); în template-ul paginii principale, afișează doar NULL pe pagină.

Josef Ulander Josef Ulander
15 ian. 2013 20:48:50

Dacă vrei ca variabilele tale să fie accesibile global, trebuie să folosești variabile globale. O altă opțiune este să creezi o funcție așa cum a fost sugerat într-un alt răspuns. Nu știu de ce nu reușești să o faci să funcționeze. Funcționează. Trebuie să te asiguri că fișierul în care este definită variabila se execută înainte să încerci să folosești variabila, deci poate asta este problema.

s_ha_dum s_ha_dum
15 ian. 2013 21:34:43