• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Wir haben den Frühjahrsputz beendet, Ihr auch? Welches Foto zu dem Thema hat Euch dann am Besten gefallen? Hier geht es lang zur Abstimmung --> Klick

[PHP] PHP "permanente" Variablen? [WordPress]

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
Liebe Community!

Ich schreibe gerade an einem WordPress Plugin und brauche da mal etwas Hilfe.
Mein Plugin unterstützt Shortcodes und produziert mit deren Hilfe einen bestimmten HTML Code.

Wenn der Shortcode jetzt allerdings ein zweites Mal aufgerufen wird (er kommt z.B. zwei mal auf eine Seite vor), muss der generierte HTML Code eindeutig zu unterscheiden sein.

Also Beispielsweise:
Code:
<div class="myClass-0"></div>
<div class="myClass-1"></div>
<div class="myClass-2"></div>
und so weiter.

Ich habe es mit folgendem PHP-Code probiert:
Code:
if(!$classID)
{
    $classID = 0;
}
else
{
    $classID = $classID + 1;
}
echo ("<div class=\"myClass-".$classID."\"></div>");


Leider funktioniert das nicht.
Scheinbar wird die Variable nach einmaligem Aufruf der Funktion gleich wieder gelöscht.

Ich müsste irgendwie eine Art von permanenter Variable in den Parser einschleusen, die nicht gelöscht wird.
Leider hab ich mit solchen Sachen keine Erfahrung und wüsste nicht, wie ich das angehen sollte.

Hat vielleicht jemand eine Idee dazu?
Freue mich über jede Hilfe!
Liebe Grüße
J.
 

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
Das Problem ist ja, dass ich mich nicht in einer Schleife o.Ä. befinde.
WordPress includiert meine plugin PHP Datei und verwendet den Shortcode von dieser Datei (dahinter steckt eine einfache Funktion).
Wenn WordPress jetzt diese Funktion bzw. meinen Shortcode ein zweites Mal ausführt, ist meine Variable nicht mehr vorhanden.

Vielleicht ist die Frage ja auch mehr für WP Profis…

Das mit dem "Globalisieren" wäre ja mal 'nen Versuch wert.
Ich hab das auch schon probiert, nur noch nicht ganz verstanden.

Wie geht das denn genau?
Muss ich die Variable erst deklarieren und dann globalisieren??
 

_linx_

Kleiner Weinapfel
Registriert
04.01.09
Beiträge
1.125
Oder, gerade wenn du von Funktionen sprichst, meinst du vielleicht auch statische Variablen (google mal nach "static php").
 

drp

Jerseymac
Registriert
12.04.11
Beiträge
458
Kannst du vielleicht mal etwas mehr Code posten, damit man sich etwas darunter vorstellen kann? Was genau willst du ersetzen/ausgeben und wie wird deine Funktion aufgerufen?
 

Eisenherz

Idared
Registriert
27.05.10
Beiträge
27
Hi!

Also folgendes Problem. Naja nicht Problem, sondern Feature:

In PHP ist eine Funktion wie eine kleine eigene Welt. Die Variablen, die Du in dem Funktionsaufruf setzt sind dann nur in der Funktion verfügbar.
Genauso mit dem Variablen aus dem übrigen Script. Die sind nur "draussen" verfügbar. Aber nicht innerhalb der Funktion.
Siehe dazu: http://php.net/manual/de/language.variables.scope.php

Zur Problemlösung: Setze die Variable in deiner Funktion als global. Also -> "global $classID;" Dann kannst Du sie auch draussen Verwenden.

LG
 

_linx_

Kleiner Weinapfel
Registriert
04.01.09
Beiträge
1.125
Das wiederum ist bockmist. Du kannst keine Funktionsinternen Variablen ausserhalb verwenden mit "global". Das macht genau das umgekehrte, und zwar die Variablen von ausserhalb in die Funktion einzubinden...