Beiträge von Melewo

    Mit Script meine ich das ganze Script, also alle Dateien, die da gegenseitig includet werden. Ein kleines Script besteht nur aus einer einzelnen Datei, WordPress als Script aus einer Vielzahl von Dateien.

    Eine Variable wird innerhalb einer Funktion global gemacht. Ich weiß zwar längst noch immer nicht genau, wie sich was bei WP verhält, doch so in etwa würde ich das wie folgt beschreiben. Die header.php, sidebar.php oder footer.php sind eigentlich nicht viel mehr als die Inhalte für die Funktionen:

    Code
    get_header();
    get_sidebar();
    get_footer();


    Um nun eine Varibale in einer dieser Dateien global zu machen, kann eine Variable zwar in der Datei functions.php einfach notiert werden,

    PHP
    // In der functions.php
    $ausgabe = "Test Ausgabe";


    doch um die auszugeben, muss die innerhalb der Funktion global gemacht werden.

    PHP
    // In der header.php, sidebar.php oder footer.php
    global $ausgabe;
    echo $ausgabe;


    Weil das vom Prinzip etwa dieser Variante entsprechen würde:

    PHP
    function get_header() {
        global $ausgabe;
        echo $ausgabe
    }
    
    
    // Ausgabe:
    get_header();


    Schrieb nur vom Prinzip, denn durchgewurstelt habe ich mich da noch nicht bis zum Ende, weil sich das bei WP von einer Datei über viele weitere erstreckt. Das wären so in etwa die Grundlagen betreffend Sichtbarkeit und Geltungsbereich von PHP allgemein und innerhalb von WP.

    Besser als mit globalen Variablen zu arbeiten und die einfach nur in der functions.php zu notieren, ist es aber entsprechende Funktionen in der functions.php zu notieren, wie in den Beispielen von gestern.

    Habe mir Deine Zips nicht angesehen, so tief wollte ich da auch nicht einsteigen, zu programmieren habe ich selbst noch genug vor mir. Wenn Du von einem Widget etwas an einem anderen übergeben möchtest, kommen da entweder Options oder ähnliches in Frage, die jedes Widget in der Datenbank ablegt, oder aber auch $_SESSION oder $_COOKIE.

    PHP
    session_start();
    
    
    // Widget-Eins ist noch nicht geladen gleich 1
    // Widget-Eins ist schon geladen gleich 2
    $_SESSION['widget'] = 1;


    Wenn aber alles bei einem Aufruf erfolgen soll, dann müsste wohl eher das eigentliche Script umgeschrieben werden und wie bereits erwähnt, so tief wollte ich da nicht einsteigen, ging ja nur um einige Hinweise und um allgemeine Fragen zur PHP-Programmierung.

    Dann schaue doch einfach in der DB nach, was da los ist und wo die Änderungen bleiben. Kann ja nicht sein, dass Du etwas änderst, doch ein nicht mehr vorhandener Inhalt ausgeliefert wird. Möglicherweise bearbeitest Du ja nur die Revisionen oder legst was weiß ich an. Jedenfalls muss ja alter, ausgelieferter Content und neuer, nicht ausgelieferter Content vorhanden sein, wenn nichts aus dem Cache geladen wird.

    Nun habe ich einmal die Frage im Zusammenhang gelesen, die hat nichts mit dem Sichtbarkeitsbereich von Variablen zu tun.

    http://www.selfphp.de/forum/showthread.php?t=25315

    Eine Variable ist immer nur bis zum Ende der Laufzeit eines Scripts vorhanden und wird dann aus dem System gelöscht. Damit ist nicht gemeint, wie lange eine Seite geöffnet ist, sondern die Laufzeit in Millisekunden, bis das Script abgearbeitet wurde. So wie das untere Ende des Scripts erreicht ist, werden alle Variablen gelöscht. Du kannst somit nicht Script 1 abarbeiten um dann mit den in Variablen gespeicherten Werten noch Script 2 zu beauftragen.

    Eine Ausnahme bilden nur Superglobals wie $_GET, doch Du willst ja keine Werte von einer Seite an die andere per Query-String übergeben. Somit solltest Du innerhalb eines Scripts alle Abfragen an die DB senden. Was Du vorhast, bedarf einer anderen Lösung.

    Etwas einfacher.
    Nun hoffe ich nur, dass ich da keine Flüchtigkeitsfehler eingebaut habe, soll ja nur als Überblick dienen und praktisch ist alles den Kommentaren zu entnehmen.

    Sichtbarkeit und Gültigkeitsbereich allgemein in PHP:

    In WordPress:

    Da zum Template gehörende Dateien, wie header.php, footer.php oder sidebar.php nicht in andere Template-Dateien includet, sondern über eine Funktion eingebunden werden, sollten Variablen über eine in der functions.php zu notierende Funktion hinzugefügt werden, insofern es sich um kein Plugin handelt.

    Drei Beispiele für die functions.php vom Theme:

    Ausgabe in footer.php

    PHP
    <?php
    gebe_aus_in_wp();
    echo esc_html( ausstieg_in_wp() );        
    get_ende_in_wp();
    ?>

    Ausgabe in sidebar.php getestet:

    PHP
    <?php
    echo esc_html( gebe_aus_in_wp( false ) );
    echo esc_html( ausstieg_in_wp() );
    get_ende_in_wp();
    ?>

    Da hätte ich Dir eine Antwort geben können, weil eine Variable, die in der header.php definiert wird, in der footer.php nicht mehr gültig ist. Liegt einfach daran, dass die header.php und footer.php selbst nur über Funktionen eingebunden werden

    PHP
    get_header();
    ...
    get_footer();


    und diese Variable dadurch entweder global gemacht werden müssen oder besser, einfach eine Funktion für die Rückgabewerte dieser Variablen in der functions.php notieren, um dann über diese Funktion auf die Variablen in allen Template-Dateien zugreifen zu können.

    Habe das Spiel gerade durch mit WP, unten ist dann die Hilfsfunktion für WP, obwohl jetzt reichlich speziell:

    http://www.coder-welten.com/php-klasse-fue…von-html5-tags/

    Eigentlich kenne ich es nicht anders, dass, wenn auf true gesetzt, PHP dann wenigstens einen Hinweis ausspuckt. Wenn nicht einmal ein Hinweis kommt, dann, ja was dann? Bin gerade etwas ratlos.

    Kommt ja doch ein Hinweis, weil ich gerade noch am Schreiben war, sehe ich das erst jetzt.

    Disabling Maintenance mode…

    Da liegt jetzt eine Maintenance-Seite herum und die ist weiß oder wie?

    Aktualisiere doch per FTP und wenn das erledigt ist, dann schaue nach ob es wieder läuft oder ob da noch eine Maintenance-Seite gelöscht werden muss.

    Ja aber jetzt kommt doch gar nichts mehr, vorher wenigstens noch etwas. Und wenn die vorher lief, warum denn jetzt nicht mehr? Und warum nimmst Du eine Backup-Datei?

    Ich sehe keinen augenscheinlichen Fehler im Code.
    Hast Du in der wp-config.php auf True gesetzt, damit die Seite nicht so leer aussieht?

    Code
    define('WP_DEBUG', true);

    Wenn die Seite richtig bei eingeloggt ladet, dann würde ich da erste einmal nicht mehr machen. Es könnte jedoch möglich sein, dass noch etwas mehr zerschossen ist, eventuell vorher eine Funktions dafür in der functions.php vorhanden war, die nun verloren ging oder so.

    Hatte das mit der Zeile nur einmal schnell in einem Standard-Theme getestet und da wurde es an dieser Position richtig ausgegeben:

    PHP
    <?php wp_enqueue_script( 'jquery' ); ?>
    [COLOR=#a9a9a9]<?php wp_head(); ?>
    </head>[/COLOR]

    Fehlermeldung kommt bei mir auch nur im IE mit F12.

    Du greifst auf jQuery zu und hast es nicht eingebunden. Ist so, als wenn kein Strom aus der Steckdose oder Wasser aus dem Hahn kommt, weil der Hausanschluss fehlt.

    Notiere mal in der header.php, jedoch nicht als letzte Zeile vor </head>.

    PHP
    <?php wp_enqueue_script( 'jquery' ); ?>


    Wenn da eine Zeile wie<?php wp_head(); ?> enthalten ist, muss die Zeile mit jQuery noch davor kommen.

    Ich sehe das nicht richtig im Quelltext. Jedenfalls kommt als Hinweis, dass jQuery undefiniert ist.

    Kann das sein, dass Du auf jQuery zugreifst, aber vergessen hast jQuery im Header einzubinden?
    Da kommt der erste Zugriff auf jQuery, doch ich sehe davor nichts von einer Einbindung im Head.

    Code
    <script type = "text/javascript">jQuery(function ()

    Davor müsste ja eine Zeile wie diese im Head kommen:

    Code
    <script type='text/javascript' src='http://... / ... /... /jquery.js?ver=1.10.2'></script>


    Innerhalb vom Dashboard wird JQ immer zugeladen, doch im Theme müsstest Du Dich darum selbst kümmern.

    Es liegt zum Teil daran, als die Standard-Themes entwickelt wurden, gab es noch Vorschläge für HTML5, die so nicht mit bei der endgültigen Fertigstellung 2014 übernommen wurden/werden?

    Dazu gehört denke ich <hgroup>, aber auch einige Punkte, welche die semantische Unterteilung betreffen. Also nicht mehr als eine H1 pro Seite war in HTML4 richtig und ist mit Unterbrechung nun auch wieder in HTM5 richtig. Weiß nicht wie viele Themes es betrifft.

    HTML
    <header>
      <h1> Mein Blog </h1>
    </header>
    ...
    <article>
      <header>
        <h1> Neuer Artikel </h1>
      <header>
    <article>


    Ist jedenfalls eine H1 zu viel, keine Angst, bei mir ebenfalls. Ist nicht so eilig, doch werde ich bei mir da mal versuchen (falls ich mal viel Zeit und Lust haben sollte) aus der ersten H1 etwas wie

    HTML
    <header>
      <p class="wie_h1"> Mein Blog </p>
    </header>


    zu machen, denn dieser wiederkehrende Blogtitel braucht ja nicht auf allen Seiten als H1 ausgewiesen zu werden, wichtiger ist die eigenliche Headline vom Artikel . Nur es eilt halt auch nicht unbedingt, wie ich meine.

    Eigentlich läuft es ganz gut, aber bisweilen wäre mir ein Forum zum diskutieren lieber.
    Könnt ihr mir einen Tipp geben, in welchem Forum ich mit gemischten Fragen zu WordPress-Programmierung und allgemeiner PHP-Programmierung am Besten aufgehoben bin?


    Bevor ich hier im Forum mit dem Posten begann, war ich einige Zeit in einem PHP-Forum unterwegs. Dort musste ich mir anfangs anhören, dass die Bezeichner von Funktionen und Methoden möglichst in camelCase zu schreiben sind und Klassen in CamelCase. Bei den Bezeichnern von PHP eigenen Funktionen gab es beim Wechsel von PHP4 zu PHP5 ebenfalls einen kaum zu übersehbaren Wechsel in dieser Richtung.

    Beispiel PHP4: get_element_by_id
    Beispiel PHP5: getElementById

    Als ich mir das angenommen hatte und die erste Funktion für WP schreiben wollte, stolperte ich gleich über die PHP Coding Standards von WordPress:

    Zitat


    Naming Conventions #
    Use lowercase letters in ... and function names (never camelCase). Separate words via underscores.


    make.wordpress.org/core/handbook/coding-standards/php/

    Empfinde diese Coding Standards von WP irgendwie als das genaue Gegenteil vom allgemeinen Trend der Entwicklung bei PHP. Sind noch ein paar andere Dinge, zum Beispiel das in den Core Dateien HTML enthalten ist, wo sich einige Zeilen einfach nicht mehr für eine aufgeräumte Quelltextansicht ausrichten lassen oder das man ab und an vor der Wahl steht, ob nun im Theme verschachtelte PHP-Anweisungen übersichtlich auszurichten oder aber so zu schreiben, dass HTML in der Quelltextansicht richtig ausgerichtet wird.

    Zu Deiner Frage, allgemeine Fragen zur Entwicklung von Plugins kannst Du hier unter Plugins stellen, ist kein Problem. Nur bringt WP einen großen Teil von eigenen Funktionen mit sich, die teilweise nicht schlecht sind und bekannte PHP-Funktionen verkürzen.

    Als ein gutes Beispiel würde ich esc_html ansehen:

    In WP: esc_html( "String" )
    In PHP: htmlspecialchars("String", ENT_QUOTES, "UTF-8", false)

    Nun erwarte nicht, dass sich jeder PHP-Entwickler, der nicht ab und an etwas für WP entwickelt, sich mit den rund 1.600 Hooks von WP und mit diesen allgemeinen WP-Funktionen auskennen würde, falls Du in einem PHP-Forum eine Frage stellen solltest. Ein gewisser Teil der Entwickler sicherlich schon.

    Na ja, da lässt sich nicht einmal raten, was sein könnte.

    Wie viele Request bei einem Aufruf der Seite gesendet?
    Wann trifft die erste Response ein, wann die letzte, bei wie vielen Request?
    Wie viele DB-Anfragen erfolgen bei einem Aufruf?
    Wie viele Revisionen wurden bereits gespeichert und wie viele Beiträge?

    Wenn bereits die erste Response (womit nicht das laden der Seite gemeint ist) über eine Sekunde benötigt, werden vor der Auslieferung bereits Request an anderen Servern gesendet?
    Wie viele Request zu anderen Servern werden insgesamt gesendet und wie viele davon sind möglicherweise nicht erreichbar?
    Wie viele referenzierte Dateien sind möglicherweise nicht erreichbar?

    Das wären so die ersten Fragen, die mir einfallen würden. Wenn Du da zum Beispiel 1.000 Beiträge mit 10.000 Revisionen in der BD hast, Deine Plugins dazu noch vor der Auslieferung Anfragen an andere Servern stellen, die eventuell so überaltert sind, dass die abgefragten Hosts gar nicht mehr antworten, dann brauchst Du Dich über nichts zu wundern.

    Deaktiviere doch in einem ersten Schritt alle Plugins, vielleicht genügt das bereits. Wenn es sich um neue Plugins handelt, da gibt es einige, die mindestens PHP 5.3 voraussetzen, allerdings sollte dann ein Hinweis ausgegeben werden.

    trotz meiner scheinbar zu ungenauen beschreibung.


    Was möchtest Du denn genauer wissen?

    1. was habt ihr da für erfahrungen


    Je bekannter eine Site, umso mehr werden Spammer angelockt. Spammer versenden nur sehr selten an jede einzelne Adresse Mails oder Spamkommentare, sondern arbeiten mit Tools, die mit Spambots das Web durchlaufen. Kommentare von Spambots zu erkennen, dafür gibt es Plugins, die mehr oder weniger gut ihre Aufgabe erledigen. Hier hilft nur eigene Erfahrungen sammeln und aus den Erfahrungen anderer lernen. Um aus den Erfahrungen anderer zu lernen, musst Du viel lesen, zum Beispiel hier im Forum oder auch Bewertungen wie diese lesen:

    http://wordpress.org/support/view/p…am-bee?filter=5

    Bei den Plugins muss zusätzlich noch die rechtliche Seite beachtet werden. So hat es sich zum Beispiel Google als (vermutlich nach meiner Meinung) fleißigster Datensammler sehr einfach gemacht und wälzt die Verantwortung auf die Seitenbetreiber und User ab. Nach dem Motto, wer über die Suchergebnisse eine Seite öffnet, sollte zuerst die Datenschutzerklärung von dieser Seite lesen und der Seitenbetreiber ist dafür verantwortlich, die User darüber zu informieren, wohin welche Daten gesendet werden und wie diese gespeichert und verwertet werden. Genau hierauf ist ebenso bei den verwendeten Plugins zu achten.

    2. was bietet wordpress für absicherungen bzw. kann man wöchentlich o. so eine sicherung machen.


    Wie Du Deine Daten gegen einen möglichen Verlust sicherst, oder ob Dein Hoster das für Dich bereits erledigt, darüber entscheidet nicht WP. Es gibt nur Tools, die dieses Sichern gegen Verlust erleichtern helfen sollen. Auch hier hilft nur wieder suchen und lesen, welche Erfahrungen andere gesammelt haben. Nur als Anregung, ich habe bisher nichts davon getestet:

    http://www.elmastudio.de/wordpress/sich…ssigen-backups/

    Gibt es keine Bestätigung wie "Ihr Cookie wurde gesetzt"?


    Wie viele Cookies setzt Deine WordPress-Installation ohne Dich und die User darüber zu informieren?
    Wie viele Cookies setzen Google, Amazon oder andere Webseiten?
    Möchtest Du bei jedem Aufruf eine Bestätigung erhalten?
    Dann würdest Du nicht mehr im Web unterwegs sein können, ohne eine Bestätigung nach der anderen zu erhalten.

    Sehe gerade, warum einen Doppelpost? Davon vergeht einem höchstens die Lust zu antworten:

    http://forum.wpde.org/konfiguration/…-vor-links.html

    Damit rufst Du eine Funktion auf:

    Code
    <a href="javascript:gaOptout()"> ... </a>


    Und diese Funktion wiederum ein Cookie:

    Code
    function gaOptout() {
      document.cookie = disableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/';
      window[disableStr] = true;
    }


    https://developers.google.com/analytics/devg…/?hl=de#disable[/QUOTE]

    Was willst Du beim Setzen, Überschreiben, Bearbeiten oder Löschen von Cookies sehen? Beinahe jede Webseite setzt Cookies, ohne das Du davon etwas siehst, wenn Du nicht nachschaust.

    Ich kenne mich zwar kaum mit mit Google Analytics aus, doch das ist kein Link, das ist eine Funktion für einen Funktionsaufruf und aus dem Zusammenhang gerissen.

    Code
    <a href="javascript:gaOptout()"> ... </a>


    Und das eigentliche Ziel sollte in der Funktion vorhanden sein, dort wo diese definiert wird. Wie es ausschaut rufst Du mit dieser Funktion keine Webseite auf, sondern ein Cookie.

    Code
    function gaOptout() {
      document.cookie = disableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/';
      window[disableStr] = true;
    }


    https://developers.google.com/analytics/devg…/?hl=de#disable