Obtener variable PHP desde functions.php y mostrarla en archivos de plantilla del tema

4 may 2012, 18:46:00
Vistas: 51.4K
Votos: 9

Esto puede parecer una pregunta tonta pero no logro resolverlo.

He creado una variable en mi functions.php - y estoy tratando de mostrarla en mis archivos de plantilla.

Supongo que es por el alcance de la variable.

¿Cuál es la forma más simple de mostrar una variable o crear una función que me permita mostrar este ID de Facebook en varios archivos de plantilla?

Esto es lo que tengo actualmente en mi functions.php...

$fb_app_id = '68366786876786';

Y así es como estaba tratando de mostrarlo...

<?php echo $fb_app_id; ?>


Cualquier idea sería de gran ayuda, muchas gracias


2
Comentarios

Cerrado por votación como fuera de tema. Esta es una pregunta sobre programación/PHP, no sobre WordPress.

Chip Bennett Chip Bennett
4 may 2012 18:53:09

Usa global $your_var; echo $your_var; o echo $GLOBALS['your_var'];.

kaiser kaiser
4 may 2012 19:33:38
Todas las respuestas a la pregunta 3
1
18

Si no tienes acceso al valor, probablemente sea un problema de alcance. Asegúrate de globalizarlo primero:

<?php
global $fb_app_id;
echo $fb_app_id;
?>

Alternativamente

No soy fanático de las variables globales, por lo que la alternativa que recomiendo es usar el mecanismo de filtros incorporado en WordPress. Agregas el filtro en tu archivo functions.php y lo aplicas donde sea necesario.

En functions.php:

add_filter( 'fb_app_id', 'return_fb_app_id' );
function return_fb_app_id( $arg = '' ) {
    return '68366786876786';
}

En tus archivos de plantilla:

echo apply_filters( 'fb_app_id', '' );

O usa un action hook

En functions.php

add_action( 'fb_app_id', 'echo_fb_app_id' );
function echo_fb_app_id() {
    echo '68366786876786';
}

En tus archivos de plantilla:

do_action( 'fb_app_id' );

Ya sea que uses un action hook o un filtro depende completamente de ti. Recomiendo un filtro porque puede retornar un valor. Esto es mucho más flexible que solo inyectar llamadas echo en tu plantilla.

4 may 2012 18:59:05
Comentarios

Voto a favor del método basado en filtros. Mucho más limpio.

Rutwick Gangurde Rutwick Gangurde
3 mar 2016 11:01:57
3

la forma más fácil sería simplemente crear una función invocable, realmente no necesitas un hook aquí

function get_fb_app_id() {
    $fb_app_id = '68366786876786';
    return $fb_app_id;
}

y en la plantilla:

echo get_fb_app_id();
4 may 2012 19:01:14
Comentarios

¿Una función envolvente para retornar una variable global?

kaiser kaiser
4 may 2012 19:33:54

no, no la definiría como global, por eso no añadí la línea global.

fischi fischi
5 may 2012 17:10:04

Ok. Entonces, ¿por qué no está dentro de la function? Actualmente la función simplemente lanzaría un Error: undefined (...).

kaiser kaiser
6 may 2012 18:09:45
0

En este caso, yo usaría las opciones de WordPress. Puedes establecer una opción usando add_option() o update_option() (probablemente mejor para tu caso). Usarías update_option('fb_app_id', '68366786876786'); en algún lugar de tu archivo functions.php (la función del hook init probablemente sería un buen lugar).

Luego podrías mostrar esta opción en tus archivos de plantilla usando echo get_option('fb_app_id');

La razón por la que sugeriría esta forma, en lugar de usar variables globales (puaj) o hooks de acción/filtro, es que si planeas lanzar tu tema al público, será mucho más fácil hacer que fb_app_id sea una opción editable en una página de opciones del tema.

4 may 2012 19:44:47