Sidebar
ein-/ausblenden

Aktivierung von Themes nutzen

Plugin für WordPress SEO

Anzeige

Das Photoblog-Theme Greyfoto wurde von mir mit einem Update versehen und ich woltle erstmalig sicher gehen, dass die Einstellungen von WordPress so sind, wie ich sie für das Theme brauche. Daher muss also beim Aktivieren einige Daten in der Datenbank geschrieben werden. Aktuell gibt es dafür keinen Hook, wie man das von Plugins her kennt. Die Diskussion in der WP-Hacker-Liste kam da gerade recht und eventuell bekommen Theme-Entwickler diese Hooks, ähnlich wie bei Plugins, dann auch zu Themes, ab WordPress Version 2.9.

Möchte man das Aktivieren des Themes nutzen um diverse Einstellungen zu setzen, dann kann auch folgender Schnipsel sehr nützlich sein, der in der Diskussion der WP Hacker auf kam. Dies klappt wunderbar und sollte für Theme-Entwickler nützlich sein, die Optionen beim Aktivieren schreiben wollen.

Hier ein kleines Beispiel, in dem die Standard-Einstellung posts_per_page von WordPress in der Tabelle options neu auf den Wert 1 gesetzt wird.


// with activate istall option
if ( is_admin() && isset($_GET['activated'] ) && $pagenow == 'themes.php' ) {
	update_option( 'posts_per_page', 1 );
}

Seit WordPress Version 2.9 gibt es explizit dafür die Funktion register_theme_directory().

8 Kommentare zu „Aktivierung von Themes nutzen“

  1. 1
    Kommentar von Nicolas

    Bei diesem Beispiel werden bei jeder (festgestellten) erneuten Aktivierung eines themes die vorherigen Einstellungen des Benutzers überschrieben.
    'Festgestellten' da ich mir vorstellen kann, dass es noch andere Methoden gibt das theme zu ändern als über themes.php. Auch wenn das wahrscheinlich, wenn überhaupt, nur wenige Blogger betrifft.
    Aber auf jeden Fall eine nützliche Idee von Ozh!

  2. 2
    Kommentar von Frank Bültge

    @Nicolas: es gibt immer viele Wege; ja, bei jeder neuen Aktivierung werden die Daten überschrieben. Das kannst du ja abfragen, setze einen wert beim ersten Aktivieren und frage den ab, dann passiert das nicht mehr. Es gehört nicht in die themes.php, sondern in die functions.php des Themes.

  3. 3
    Kommentar von Ralf

    Das wird lustig wenn es sich durchsetzt und in Mode kommt. Jeder Theme-Entwickler darf dann nach Lust&Laune in den Optionen rumfummeln. Bei den Optionen die man im Backend einstellen kann, dürfte es nur lästig sein die Optionenn nach dem Deaktivieren des Themes (z.B. kurz mal ausprobieren) wieder alle zurück zu stellen. Bei den Optionen die man nicht so einfach über das Backend erreicht, dürfte es u.U. zu richtigen Problemen kommen.

    Nein, nein, nein. Ein Theme (oder auch Plugin) das ungefragt an meinen Einstellungen rumfummelt wird verflucht und rituell verbrannt. Das gehört sich nicht! Was ist so schwer daran einen deutlichen Hinweis zu geben welche Einstellungen das Theme benötigt um korrekt zu arbeiten?
    Hier geht Bequemlichkeit mal wieder über Sicherheit. Schade drum.

  4. 4
    Kommentar von Frank Bültge

    @Ralf: klar, weise ich im Artikel darauf hin, aber die Leser sind meist nicht in der Lage zu lesen und daher war dies ein Ansatz. Der Code wird aus meiner Sicht immer in der Verantwortung des Autors liegen, man kann eh machen, was man will; wenn der Nutzer keinen Schimmer hat, dann ist sonst was möglich. Der Schnipsel soll nicht zeigen, wie man Standard-Werte des Users verändert, sondern wie man Einstellungen setzt, weil ein Theme aktiviert wurde. Da viele Themes mit Optionen kommen, ist das sicher auch ein wichtiger Aspekt der in vielen Themes immer mehr zum Tragen kommt.

  5. 5
    Kommentar von Ralf

    Ok, RTFM ist immer ein großes Problem. Aber eben jenen Leuten müsstest du dann auch erklären warum nach Deaktivierung des Themes immer nur ein Beitrag im Blog angezeigt wird. Denn so wie ich das sehe, gibt es keinen Weg den aktuellen Stand der Einstellungen abzuspeichern und ihn bei Deaktivierung des Themes wieder her zu stellen. Der einzige Weg wäre ein Backup der DB. Da sind wir dann wieder bei den DAUs und RTFM, denn WP bietet von Hause aus ja keine Backup-Funktion, sondern lediglich einen Export der Beiträge an. So gesehen dürfte es kaum einen Unterschied machen ob man die Benutzer darauf hinweist vor Verwendung des Themes verschiedene Einstellungen entsprechend vor zu nehmen oder ob man ihnen sagt sie sollen ihre Einstellungen speichern.

    Vielleicht wäre es auch ein gangbarer Weg mit dem Theme ein Plugin zu bundeln, welches die aktuellen Einstellungen speichert und bei Deaktivierung wieder herstellt. Für Plugins gibt es ja entsprechende Hooks für Aktivierung und Deaktivierung. Im Theme selber kann man dann dementsprechend einen deutlich sichtbaren Hinweis hinterlegen das ein entsprechendes Plugin für die Funktionalität aktiviert werden muss, sofern dieses noch nicht aktiviert wurde (könnte man z.B. über function_exists() prüfen).
    Der Vorteil an dieser Methode wäre der, dass man im Plugin prüfen kann ob das entsprechende Theme noch aktiv ist. Wenn nicht, werden die ursprünglichen Einstellungen verwendet. Wenn ja, dann die für das Theme notwendigen Einstellungen.

  6. 6
    Kommentar von Frank Bültge

    @Ralf: grundsätzlich stimme ich zu; eventuell sollte ich über Verantwortung nachdenken, denn meine Lösung geht davon aus, dass ich nichts erkläre, dass muss der Entwickler selbst tun. Bei Kunden mache ich es zum Teil so, dass ich den alten Wert als Option in der DB speichere und beim deaktivieren wieder zurück setze, also die gespeicherten Werte wieder an die alte Stelle schreibe. Aber auch dafür haben Plugins keine Lösung, man muss sich selbst Gedanken machen. Ich meine einfach, dass man heute mehr Ansprüche an Themes hat, sie sind mehr als nur Templates und Stylesheet, sie bringen Funktionen mit. Entweder die lasse ich im Theme, oder ich lagere sie in ein Plugin aus. Beides hat aus meiner Sicht Vor- und Nachteile. In meinen Fall war der Weg so, dass die Leute zum Teil überfordert waren, ein Plugin extra zum Theme an die richtige Stelle zu kopieren und so war der Entschluss schnell gesetzt, alles ins Theme.

  7. 7
    Kommentar von Ralf

    Ich denke WordPress ist so langsam nicht mehr das einfache Blogsystem für Jedermann. Statt dessen ist es nur noch eine Winzigkeit von der Komplexität z.B. von Typo3 entfernt.
    Deswegen wäre es vielleicht ganz sinnvoll wenn sich WP in zwei Varianten weiter entwickeln würde. Die eine so eine Art "Professionell" welche z.B. auch komplexe Themes mit Zusatzfunktionen ermöglicht. Diese Variante wäre dann eher etwas für diejenigen, die sich mit WP (oder Computer&Internet generell) etwas besser auskennen.
    Die andere Variante wäre dann so eine Art "Simple" für diejenigen, die nicht so viel Ahnung haben und erst einmal Erfahrungen sammeln wollen. Oder diejenigen, die nicht so hohe Ansprüche haben. Die Rufe nach einer abgespeckten WP-Version wurden in letzter Zeit ja auch immer lauter.

    Es gibt ja offensichtlich viele Wege die nach Rom führen. Jedoch sind alle sehr steinig und voller Stolperfallen. Wenn jemand damit überfordert ist ein Theme zu installieren und ein paar Optionen zu ändern, oder ein Theme und zusätzlich ein Plugin zu installieren, dann ist nicht die Lösung falsch, sondern das Produkt passt nicht zum Konsumenten/Anwender.
    WP ist offensichtlich mittlerweile an einen Punkt angelangt, an dem man sich ein paar grundsätzliche Gedanken machen muss. Will man noch mehr Funktionalität und damit noch mehr Komplexität. Oder will man jetzt doch eher eine Software für die Massen entwickeln die in erster Linie einfach zu handhaben ist. Wenn das WP-Team versucht beides unter einen Hut zu bekommen, was es offensichtlich tatsächlich tut, dann dürfte das früher oder später nicht gut ausgehen.

  8. 8
    Kommentar von Frank Bültge

    @Ralf: definitiv meine Meinung, außer dass ich nicht zwei Varianten WP haben will, sondern einen Kern - einfach bloggen, und die Version will ich mit Plugins ausbauen, dabei sollen viele jetzige Bausteine als Core-Plugin kommen, die dann mit der Version von WP konform und geprüft sind, keine offenen Plugins wie jetzt.
    Mit meinem Theme als Photoblog war ja gerade die Idee: "WP einfach und los geht es" gedacht, was auch die Anwender bestätigen, daher musste ich einen Weg finden, das Feld einfach zu setzen. In einigen Fällen mache ich das, in dem die User ein Install-Plugin bekommen, also nach der Install setzen sie meine Werte via Plugin und fertig. In dem Fall Theme war es eben naheliegend, die Aktivierung von Themes zu nutzen.

Kommentar schreiben

Kommentarregeln: Bleib cool, kritisch ist in Ordnung, aber wenn du unhöflich bist, dann lösche ich deinen Kommentar. Bitte benutze deinen persönlichen Namen oder Initialen und nicht den Namen eines Unternehmens, dies würde als Spam gewertet und wird gelöscht. Der Zusammenhang zwischen Namen und URL sollte nicht offensichtlich auf Spam hindeuten! ♥ Ansonsten, vielen Dank für den Kommentar und viel Spaß mit meinem Blog.

E-Mail-Benachrichtigung bei weiteren Kommentaren.
Auch möglich: Abo ohne Kommentar.

Kommentar-Hilfe

händischer Spam:
Beachte die Kommentarregeln, jede Form von versuchtem Spam wird gelöscht. Warum und wieso steht in einem meiner Beiträge.

Bezug auf Textstellen:
Du kannst direkt bezug auf Textstellen im Beitrag nehmen. Dazu muss lediglich der Bereich im Artikel markiert werden; daraufhin erscheint ein Button, der den markierten Text in das Kommentarfeld übernimmt und als Zitat auszeichnet. Die Funktion ist nur bei aktivem JavaScript nutzbar.

xHTML:
Du kannst folgende Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <code> <pre> <em> <strong> <strike> <ul> <ul> <li>

Achte darauf, wenn du Code im Kommentar hinterlegen willst, dann muss der Code maskiert sein. Dann wird er nicht interpretiert. Der Code muss mit Hilfe von HTML-Entities dargestellt werden, d.h. dass man z.B. < als &lt; und > als &gt; einfügt.

E-Mail-Benachrichtigung bei neuen Kommentaren ?
Wenn der Haken in der Checkbox gesetzt ist, dann wirst du über neue Kommentare vie E-Mail informiert. Der Versand erfolgt nur, wenn du die URL in der Bestätigungs-E-Mail genutzt hast oder schon Abonnent hier im Blog bist.

Kommentar erscheint nicht:
Alle Kommentare werden manuell geprüft, freigegeben und nach Möglichkeit beantwortet. Bitte um etwas Geduld und Nachsicht.

Identifikationsbilder (Avatare):
Auf Gravatar.com kann man sich mit seiner E-Mail-Adresse registrieren und ein Bild hochladen, dann erscheint dieses Gravatar hier und in vielen weiteren Blogs.

Spamschutz:
Das Kommentarformular ist mit einem Spamschutz ausgerüstet. Solltest du diesen Artikel ohne JavaScript besuchen und kommentieren wollen, so muss du die Frage beantworten und das jeweilige Wort in das Textfeld eingeben.