Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Wordpress löscht meine PHP Variablen!

Informationen & SEO Tipps zum Einsatz und Verwendung von Blog-, Wiki und Content Management Systemen wie Drupal, Typo3, Wordpress, Reddot, Joomla, Moin Moin, phpWiki sowie Shop-Systemen wie z.B. XT-Commerce, Magento, ePages, Intershop, 1&1 Shops.
Neues Thema Antworten
Deathcore
PostRank 5
PostRank 5
Beiträge: 258
Registriert: 05.11.2008, 17:20
Wohnort: Bavaria

Beitrag von Deathcore » 30.11.2011, 10:51

Hallo Zusammen,

ich habe selbst ein Wordpress Template gebaut.

Wenn ich ganz am Anfang des Dokuments eine PHP Variable festlege ist diese am Ende (nach dem Wordpress Code) nichtmehr vorhanden???

Kennt wer dieses Phänomen???

Wenn ich den Wordpress Code entferen läuft alles perfekt.... :cry:

Anzeige von ABAKUS

von Anzeige von ABAKUS »

Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

Can
PostRank 9
PostRank 9
Beiträge: 1035
Registriert: 30.10.2010, 12:47

Beitrag von Can » 30.11.2011, 10:53

Mehr Infos.
Denke mal, es liegt daran, dass das WP Template das ganze idR in mehrere Dateien splittet. ggf. als Global ?

(Bin kein php profi, entspricht nur meiner Logik :D )

Deathcore
PostRank 5
PostRank 5
Beiträge: 258
Registriert: 05.11.2008, 17:20
Wohnort: Bavaria

Beitrag von Deathcore » 30.11.2011, 10:56

Ich habe einfach gesagt
eine Header, Content und Footer Datei
die Variable wird ganz am Anfang festgelegt,
dann folgen die ganzen Wordpress Scripte blablabla
und gaanz am Ende will ich die Variable wieder abrufen und sie gibts nichtmehr bzw. ist leer :o

ist auch nicht so, dass Sie überschrieben wurde oder so, nööö einfach weg.

Finde das verdammt uncool von Mr. Wordpress :bad-words:
Hab schon rumgegoogelt und finde aber auch nichts

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


fettmme
PostRank 2
PostRank 2
Beiträge: 31
Registriert: 13.04.2007, 18:43

Beitrag von fettmme » 30.11.2011, 12:10

Wordpress "löscht" nicht automatisch globale Variablen. Vermutlich werden die überschrieben, weil der Name der Variable schon verwendet wird.

Du solltest eigene Variable immer mit einem Prefix versehen, damit so etwas nicht passieren kann.

Beispiel :

Code: Alles auswählen

$deathcore_footer = 'xy';
Noch besser ist, Du kommst ohne globale Variablen aus.

Beispiel:

Code: Alles auswählen

class deathcore{
    public static $footer;
}

deathcore::$footer = 'xy';
...
echo deathcore::$footer;

Deathcore
PostRank 5
PostRank 5
Beiträge: 258
Registriert: 05.11.2008, 17:20
Wohnort: Bavaria

Beitrag von Deathcore » 30.11.2011, 12:16

das war auch mein erster Gedanke,

die Variablennamen kommen im ganzen Wordpress definitiv nicht vor. Hab schon die verrücktesten Variablennamen ausprobiert, und davon schon mind. 10 verschiedene

Anna Bolika
PostRank 2
PostRank 2
Beiträge: 44
Registriert: 22.08.2008, 07:44

Beitrag von Anna Bolika » 30.11.2011, 12:36

Also ich habe - mal ganz unabhängig von Wordpress - ein neues Verhalten innerhalb meiner Skripte beobachtet.

Variablen aus einer Include-Datei stehen in einer anderen Include-Datei nicht mehr zur Verfügung (es sei denn man macht sie global). Ich könnte schwören, dass das "früher"nicht so war.

Allerdings arbeite ich mit einigen selbstgeschriebenen Systemen, die sehr stark auf Objekte setzen, die ich per singleton aufrufe. So laufen meine alten Seiten zwar noch, aber ich habe das Gefühl, dass sich etwas geändert hat.

Aussagen zu PHP-Versionen kann ich nicht machen.

Also versuch mal, deine Variablen global zu machen. Vielleicht hilft das.

fettmme
PostRank 2
PostRank 2
Beiträge: 31
Registriert: 13.04.2007, 18:43

Beitrag von fettmme » 30.11.2011, 15:57

Variablen sind grundsätzlich erst mal global, außer man definiert sie in einer Funktion, oder einer Klasse, etc. Siehe auch https://php.net/manual/de/language.variables.scope.php

Vielleicht wird Dein File in einer Funktion inkludiert. Dann sind die Variablen natürlich nicht global. Abhilfe würde in dem Fall z.B. die statische Variable einer Klasse lösen (s.u.). Ist "sauberer" als eine globale Variable.

Ohne Glaskugel ist so ein Problem natürlich schwer einzugrenzen. Aber aus einer Erfahrung kann ich sagen: Meist liegt es an der Person vor dem Monitor. :Fade-color

Ich würde an Deiner Stelle den Code mal mit mehreren Debug Ausgaben versehen:

Code: Alles auswählen

var_dump( __FILE__, __LINE__, $footer );
Damit kannst Du das Problem eingrenzen. Einfach die Zeile im Code immer weiter runterschieben. Sobald die Variable null oder ein nicht von Dir belegter Wert ist, weißt Du wo Du weiter suchen musst.

Alternativ kann man das natürlich auch mit einem Debugger machen. Ist aber für den Anfang komplizierter.

Deathcore
PostRank 5
PostRank 5
Beiträge: 258
Registriert: 05.11.2008, 17:20
Wohnort: Bavaria

Beitrag von Deathcore » 01.12.2011, 15:35

dankeschön, du hast mir schon sehr sehr weiterholfen.

Das mit der Person vor dem Monitor stimmt natürlich nicht 8)

Könnte vielleicht mal wer nur testweise in seinen Blog (falls vorhanden)

ganz am Anfang des Dokuments (vorm doctype) einer Variable einen Wert zuweisen und im Footer (oder sogar danach) abrufen?

ich glaube dass der Fehler irgendwo in der wp_head(); drinnen steckt.....

isch gucke

------

EDIT:


also bin einen Schritt weiter (oder zurück....)

wenn ich die Variable vor <?php get_footer(); ?> abfrage funktioniert sie
aber in der get_footer nicht :(

unterhalb der get_footer funktioniert Sie auch wieder...

Deathcore
PostRank 5
PostRank 5
Beiträge: 258
Registriert: 05.11.2008, 17:20
Wohnort: Bavaria

Beitrag von Deathcore » 02.12.2011, 08:25

soooo problem Gelöst,


wieder einiges gelernt hier die Lösung des Problems :)

https://wordpress.org/support/topic/wor ... ore-footer

fettmme
PostRank 2
PostRank 2
Beiträge: 31
Registriert: 13.04.2007, 18:43

Beitrag von fettmme » 02.12.2011, 10:08

Dann ist es ja so wie oben beschrieben. Der Scope ist unterschiedlich, weil die Footer Datei in einer Funktion inkludiert wird.

Wenn Du solche Dinge in einer Klasse - wie oben gezeigt - speicherst, hast Du solche Probleme nicht.

Deathcore
PostRank 5
PostRank 5
Beiträge: 258
Registriert: 05.11.2008, 17:20
Wohnort: Bavaria

Beitrag von Deathcore » 02.12.2011, 12:24

jaaa hab ja schon verstanden ... MUTTER ;-)

Vielen dank für den Tipp! Würde sonst wahrscheinlich immernoch suchen

fettmme
PostRank 2
PostRank 2
Beiträge: 31
Registriert: 13.04.2007, 18:43

Beitrag von fettmme » 02.12.2011, 15:32

Mutter? :crazyeyes:

Ich schreib das ja nur, weil ich vor 10 Jahren die gleichen Fehler programmiert habe und sie teilweise heute immer noch betreuen muss. :cry:

Ich wünschte, damals hätte es schon sowas gegeben:
https://www.amazon.de/Entwurfsmuster-vo ... 897214210/
https://www.amazon.de/PHP-MySQL-von-Kop ... 897219034/

Das hätte mir viel erspart. Ich habe ne ganze Weile gebraucht, bis ich solche Themen wie OOP und Endwurfsmuster gefunden und kapiert habe. :robot:

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag