web-dev-qa-db-fra.com

récupère une variable php à partir de fonctions php et l'echo dans des fichiers modèles de thèmes

Cela peut sembler une question idiote mais je ne peux pas comprendre cela.

J'ai créé une variable dans le fichier functions.php - et j'essaie d'y faire écho dans les fichiers de modèle.

Je suppose que c'est à cause de la portée.

Quel est le plus simple quoi faire écho à une variable ou créer une fonction pour me permettre de sortir cet identifiant facebook dans divers fichiers modèles.

C'est ce que j'ai actuellement dans mon functions.php ...

$fb_app_id = '68366786876786';

Et c’est comme ça que j’essayais de lui faire écho ...

<?php echo $fb_app_id; ?>


Toutes les idées seraient extrêmement utiles, merci beaucoup


6
Joshc

Si vous n'avez pas accès à la valeur, c'est probablement un problème de portée. Assurez-vous de le globaliser d'abord:

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

Alternativement

Je ne suis pas un fan des variables globales, l'alternative que je recommande consiste à utiliser le mécanisme de filtrage intégré de WordPress. Vous ajoutez le filtre dans votre fichier functions.php et vous l'appliquez à votre guise.

Dans functions.php:

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

Dans vos fichiers modèles :

echo apply_filters( 'fb_app_id', '' );

Ou utilisez un crochet d'action

Dans functions.php

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

Dans vos fichiers modèles:

do_action( 'fb_app_id' );

Que vous utilisiez un crochet d'action ou un filtre, c'est à vous de décider. Je recommande un filtre car il peut retourner une valeur. Ceci est beaucoup plus flexible que simplement injecter des appels echo dans votre modèle.

13
EAMann

J'utiliserais les options de Wordpress dans ce cas. Vous pouvez définir une option en utilisant add_option () ou update_option () (probablement mieux pour votre cas). Vous utiliseriez update_option('fb_app_id', '68366786876786'); quelque part dans votre fichier functions.php (la fonction hook init serait probablement un bon endroit).

Vous pouvez ensuite afficher cette option dans vos fichiers de thème à l'aide de echo get_option('fb_app_id');.

La raison pour laquelle je suggérerais cette méthode plutôt que d'utiliser des crochets globals (ick) ou action/filter est que si vous envisagez de rendre public votre thème, il sera beaucoup plus facile de faire de fb_app_id une option modifiable dans une page d'options de thème.

2

le plus simple serait de créer une fonction appelable, vous n'avez pas vraiment besoin d'un crochet ici

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

et dans le modèle:

echo get_fb_app_id();
1
fischi