Holen Sie sich PHP-Variable von Funktionen PHP und Echo es in Theme-Template-Dateien [geschlossen]

8

Dies mag wie eine dumme Frage erscheinen, aber ich kann das nicht herausfinden.

Ich habe eine Variable in meiner functions.php erstellt - und ich versuche, sie in meinen Vorlagendateien wiederzugeben.

Ich vermute, es liegt am Umfang.

Was ist das Einfachste, um eine Variable wiederzugeben oder eine Funktion zu erstellen, mit der ich diese Facebook-ID in verschiedenen Vorlagendateien ausgeben kann?

Das habe ich aktuell in meiner functions.php ...

$fb_app_id = '68366786876786';

Und so habe ich versucht, es zu wiederholen ...

<?php echo $fb_app_id; ?>


Irgendwelche Ideen wären sehr hilfreich, vielen Dank


Joshc
quelle
1
Als Off-Topic abgestimmt . Dies ist eine Programmierung / PHP Frage, nicht eine Wordpress Frage.
Chip Bennett
Verwenden Sie global $your_var; echo $your_var;oder echo $GLOBALS['your_var'];.
Kaiser

Antworten:

15

Wenn Sie keinen Zugriff auf den Wert haben, liegt wahrscheinlich ein Bereichsproblem vor. Stellen Sie sicher, dass Sie es zuerst globalisieren:

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

Alternative

Ich bin kein Fan von globalen Variablen, daher empfehle ich die Verwendung des in WordPress integrierten Filtermechanismus. Sie fügen den Filter in Ihre functions.phpDatei ein und wenden ihn bei Bedarf an.

Infunctions.php :

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

In Ihren Vorlagendateien :

echo apply_filters( 'fb_app_id', '' );

Oder verwenden Sie einen Aktionshaken

Im functions.php

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

In Ihren Vorlagendateien:

do_action( 'fb_app_id' );

Ob Sie einen Action-Hook oder einen Filter verwenden, liegt ganz bei Ihnen. Ich empfehle einen Filter , weil es zurückgeben Wert. Dies ist weitaus flexibler als nur das Einfügen von echoAnrufen in Ihre Vorlage.

EAMann
quelle
1
Upvote für die filterbasierte Methode. Viel sauberer.
Rutwick Gangurde
2

In diesem Fall würde ich Wordpress-Optionen verwenden. Sie können eine Option entweder mit add_option () oder update_option () festlegen (wahrscheinlich besser für Ihren Fall). Sie würden update_option('fb_app_id', '68366786876786');irgendwo in Ihrer Datei functions.php verwenden (die Init-Hook-Funktion wäre wahrscheinlich ein guter Ort).

Sie können diese Option dann in Ihren Themendateien mit anzeigen echo get_option('fb_app_id');

Der Grund, warum ich diesen Weg vorschlagen würde, anstatt Globals (ick) oder Action / Filter-Hooks zu verwenden, ist, dass es viel einfacher ist, fb_app_ideine bearbeitbare Option auf einer Seite mit Themenoptionen zu erstellen, wenn Sie Ihr Thema für die Öffentlichkeit freigeben möchten .

nathangiesbrecht
quelle
1

Der einfachste Weg wäre, einfach eine aufrufbare Funktion zu erstellen. Hier brauchen Sie eigentlich keinen Hook

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

und in der Vorlage:

echo get_fb_app_id();
fischi
quelle
Eine Wrapper-Funktion, um eine globale Variable zurückzugeben?
Kaiser
Nein, ich würde es nicht auf global setzen, deshalb habe ich die globale Zeile nicht hinzugefügt.
Fischi
OK. Warum ist es nicht in der function? Derzeit würde die Funktion nur eine werfen Error: undefined (...).
Kaiser