Geltungsbereich: Verwendung einer in einer Funktion definierten Variable

Lesezeit: 2 Minuten

Geltungsbereich Verwendung einer in einer Funktion definierten Variable
mattz

Ich habe eine Funktion in einer functions.php-Datei, die bestimmte Variablen definiert:

add_action( 'the_post', 'paginate_slide' );

function paginate_slide( $post ) {

    global $pages, $multipage, $numpages;

    if( is_single() && get_post_type() == 'post' ) {

    $multipage = 1;
    $id = get_the_ID();
    $custom = array();
    $pages = array();
    $i = 1;

    foreach( get_post_custom_keys() as $key )
        if ( false !== strpos( $key, 'slide' ) )
            $custom[$key] = get_post_meta( $id, $key, true);

    while( isset( $custom["slide{$i}-title"] ) ) {

        $page="";
        $tzTitle = $custom["slide{$i}-title"];
        $tzImage = $custom["slide{$i}-image"];
        $tzDesc = $custom["slide{$i}-desc"];
        $tzEmbed = $custom["slide{$i}-embed"];

        $page = "<h2>{$tzTitle}</h2><img src="https://stackoverflow.com/questions/4378426/{$tzImage}" />";
        $pages[] = $page;
        $i++;
    }

    $numpages = count( $pages );
    }
}

Ich möchte einige dieser Variablen in einer template.php-Datei wie folgt ausgeben: <?php echo $tzDesc; ?> aber ich bekomme es anscheinend nicht zum laufen. Soweit ich das verstehe Variablenbereichum diese Variablen an anderer Stelle aufzurufen, muss ich sie im globalen Bereich definieren und sie in dieser Funktion als global aufrufen, wie ich es getan habe $pages, $multipage, $numpages;. Das sollte es mir ermöglichen, diese Variablen dort einzufügen, wo ich sie brauche. Das Problem ist, wenn ich sie aus der Funktion nehme und sie oben im globalen Bereich definiere, funktioniert die gesamte Funktion nicht mehr.

Wie muss ich das strukturieren, damit ich anrufen kann? <?php echo $tzDesc; ?> irgendwo auf der Website und die definierten Informationen wiedergeben lassen?

Ich weiß nicht, ob das wichtig ist, aber das ist auf einer WordPress-Seite.

1647259147 983 Geltungsbereich Verwendung einer in einer Funktion definierten Variable
Jason McCreary

Wenn Sie verwenden möchten <?php echo $tzDesc; ?> wie auch immer, Sie müssten definieren $tzDesc als globale Variable. Ich empfehle dies jedoch nicht, da globale Variablen berücksichtigt werden Arm Programmierpraxis.

Eine bessere Lösung wäre, die zu haben paginate_slide() addieren $tzDesc (und andere Werte) auf die $post Objekt. Auf diese Weise haben Sie jederzeit Zugriff auf diese Variablen the_post(). Wenn Sie diesen Weg gehen, achten Sie darauf, Ihre Variablen zu benennen:

$post->ns_tzDesc = $tzDesc;

  • Das Hinzufügen zum $post-Objekt klingt nach einer viel besseren Lösung. Wie würde ich das machen? Um ehrlich zu sein, bin ich mir nicht sicher, wo $post definiert ist. Wenn es hilft, ist dies auf einer WordPress-Site.

    – mattz

    7. Dezember 2010 um 15:53 ​​Uhr

  • Sehr ähnlich wie Sie ändern $pages$pages[] = $page; Siehe Aktualisierung.

    – Jason McCreary

    7. Dezember 2010 um 18:21 Uhr

  • Ich habe das versucht und es hieß Fatal error: Cannot use object of type stdClass as array in...

    – mattz

    7. Dezember 2010 um 18:29 Uhr

  • Das funktioniert etwas besser, aber es verliert die inkrementelle Natur der $i Variable, die angibt, welche Daten basierend auf der angezeigten Seite angezeigt werden sollen (Folie1-Einbettung auf Seite 1, Folie2-Einbettung auf Seite 2…). Auf diese Weise werden anscheinend nur die Informationen abgerufen, die für die letzte Seite bestimmt sind, und sie werden auf jeder Seite angezeigt. Wie kann ich den inkrementellen Charakter dieser Daten beibehalten?

    – mattz

    7. Dezember 2010 um 20:28 Uhr


1001440cookie-checkGeltungsbereich: Verwendung einer in einer Funktion definierten Variable

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy