Sidebar
ein-/ausblenden

Vorbei mit my-hacks.php?

Plugin für WordPress SEO

Anzeige

Noch diesen Monat soll die neue Version 2.8 von WordPress erscheinen; in der Blogosphäre wird schon lange kein so großer Wind mehr darum gemacht, wie es noch in den Jahren um Version 2.0 war. Aber der Linkmangel etc. wird ja auch in anderen Themen bemängelt.

Die neue Version bringt viele neue Sachen, fixt eine große Anzahl von Problemen und WordPress gestaltet sich aus meiner Sicht noch offener als in den Versionen zu vor. Eine der Punkte, die Benutzer beachten sollten, ist die Tatsache, dass man die Option für die Unterstützung der my-hacks.php entfernt. 2003 wurde diese Datei noch als Feature angekündigt, geht sie nun wieder still und leise. WordPress hat ein ausgefeiltes Schnittstellen-System; man kann an diversen Punkten ansetzen und neue Funktionalitäten einbringen, so dass man sich dazu entschieden hat, die Lösung nicht mehr zu unterstützen. Alternativen und Möglichkeiten des weiteren Nutzen will hier kurz aufzeigen.

my-hacks.php weiter nutzen

Die Datei mit eigenen Erweiterungen kann auch in 2.8 weiter genutzt werden, sie wird nur nicht mehr per Option aus dem Backend aktiviert. Will man dies tun, so muss man den Eintrag hack_file in der Tabelle options auf 1 setzen.
Dies geschieht entweder direkt in der Datenbank, beispielsweise über phpMyAdmin oder via Code:


update_option( 'hack_file', 1 );

Alternativ kann man die Option via Plugin wieder in das Backend holen, siehe Beitrag und Plugin-Download bei Schurpsel.

Die Abfrage der Datei ist weiterhin im Core und soll auch so bleiben, auch die Abfrage des Felder in der Datenbank soll bleiben.


// Check for hacks file if the option is enabled
if ( get_option('hack_file') ) {
	if ( file_exists(ABSPATH . 'my-hacks.php') )
		require(ABSPATH . 'my-hacks.php');
}

Damit bleibt alles beim alten, wer das möchte. Die Datei weiterhin im Root (ABSPATH) der Installation ablegen und sie wird gezogen.

Die Überlegung die Datei nicht mehr zu unterstützen ist natürlich mit Überlegungen verbunden und da WordPress ausgezeichnete Schnittstellen bietet, ist die Unterstützung nicht mehr als relevant angesehen. Außerdem wird die Datei recht früh gezogen und lässt sich damit nicht immer so sauber steuern, wie man das von anderen Schnittstellen kennt. Eine Prüfung auf Intoleranzen und Probleme ist garnicht vorhanden und die Datei kann auch das System bremsen.

via Plugin

Eine der Schnittstellen ist die Plugin-Schnittstelle und daher bietet es sich an, dass man sich ein Plugin anlegt, in dem man die kleinen Hacks ablegt. Entweder man lernt wie das geht, zum Beispiel in meinem kleinen Tutorial zum Plugin schreiben oder hier die Vorlage.

Einfach eine PHP-Datei anlegen und folgenden Syntax rein, dann die eigenen Hacks dort ablegen und die Datei in das Plugin-Verzeichnis kopieren. Im Backend muss es dann nur noch aktiviert werden.


<?php
/*
Plugin Name: my-hacks.php
Plugin URI: http://
Description: my-hacks.php - Ersatz seit WordPress 2.8
Author: DU
Version: 0.1
Author URI: http://
*/

/**
 * hier die Hacks ablegen
 */

?>

Theme-Funktionen

Das aktive Theme kann immer eigene Funktionen hinzubringen, dazu wird die Datei functions.php genutzt und die kann jedem Theme hinzugefügt werden. Gedacht ist sie, um explizit für das jeweilige Theme, neue Funktionen einzubringen. Daher kann man auch die Hacks dort ablegen, also einfach in die functions.php des Themes schreiben, hochladen in den Theme-Ordner und fertig.

Alternative Sprachordner

Ein dritte Möglichkeit um eigene Funktionen einzubringen ist der Sprachordner, im Standard ist das /wp-content/languages/; wp-content kann seit Version 2.5 verschoben und umbenannt werden. Wenn ein Sprachschlüssel in der wp-config.php gesetzt ist, zum Beispiel de_DE, dann wird durch WordPress in dem Ordner nach einer Sprachdatei .mo- und einer .php-Datei gesucht und wenn vorhanden, gezogen.


define ('WPLANG', 'de_DE');

/**
 * The locale of the blog
 * @since 1.5.0
 */
$locale = get_locale();
$locale_file = WP_LANG_DIR . "/$locale.php";
if ( is_readable($locale_file) )
	require_once($locale_file);

/**
 * Loads the theme's translated strings.
 *
 * If the current locale exists as a .mo file in the theme's root directory, it
 * will be included in the translated strings by the $domain.
 *
 * The .mo files must be named based on the locale exactly.
 *
 * @since 1.5.0
 *
 * @param string $domain Unique identifier for retrieving translated strings
 */
function load_theme_textdomain($domain, $path = false) {
	$locale = get_locale();

	$path = ( empty( $path ) ) ? get_template_directory() : $path;

	$mofile = "$path/$locale.mo";
	load_textdomain($domain, $mofile);
}

Dies sollte natürlich nur für Hacks und Funktionen genutzt werden, die mit der Sprache des Blog zu tun haben und nicht missbraucht werden. Im Grunde kann man aber auch dort Funktionen ablegen. Diese Möglichkeit ist vor allem sehr gut geeignet und sprachtypische Funktionen abzulegen, wie zum Beispiel das die URL bei Permalinks sauber übergeben wird (ue statt u bei ü etc.).

7 Kommentare zu „Vorbei mit my-hacks.php?“

  1. 1
    Kommentar von Ralf

    "Wird nicht mehr unterstützt" ist mal wieder eine schöne Formulierung für "Ist noch da, kann auch Probleme verursachen. Du siehst es aber nicht mehr".
    Also entweder man haut die Unterstützung komplett raus und lädt die my-hacks.php gar nicht mehr. Oder man lässt das ganze drin (z.B. in einem versteckten Menü) und bleibt beim alten. Dieses inkonsequente Rumgewurschtel ist etwas was mich an WP am meisten nervt.

    Ich stelle mir nämlich gerade vor wie ein Benutzer sein Blog von 2.7 auf 2.8 über die automatische Update-Funktion updatet und noch eine alte my-hacks.php im Root hat. Hatte die my-hacks.php bisher keine Probleme gemacht und ist einfach in der Vergessenheit versunken, zickt sie nun unter 2.8 rum weil sich z.B. zwei Funktionen in die Quere kommen. Dann versuch mal als Nicht-Profi auf die Ursache für das Problem zu kommen.

    Das ist zugegeben ein wohl eher sehr seltener Fall, zeigt jedoch das die WP-Entwickler sich mit diesem inkonsequenten Verhalten häufig selber im Weg stehen. Für die Zukunft macht das relativ wenig Hoffnung das sich WP weiter entwickeln wird. Es wird eher zu einen Flickenteppich aus alt&neu werden.

  2. 2
    Kommentar von Thomas Scholz

    Ralf, das sehe ich nicht so dramatisch. Der weiche Übergang erschert den Einsatz einfach allmählich, statt ihn ruckartig zu verbieten. Im Alltag gibt es eben mehr Stufen als Schwarz und Weiß. ;)

    Frank, zu der von dir angesprochenen $locale.php gibt es bei codestyle ein Angebot, das ich jetzt schon eine Weile nutze. Das ersetzt das Clean-Umlauts-Plugin sehr schön.

  3. 3
    Kommentar von Dennis Morhardt

    Die my-hacks.php wird mit WP 2.8 überflüssig, da WordPress dann mu-plugins kann. Man hat die Funktion von WordPress MU übernommen. Das heißt, alle PHP-Dateien im Ordner wp-content/mu-plugins werden automatisch inkludiert. Das heißt, du kannst deine my-hacks.php-Datei einfach in diesen Ordner schieben.

  4. 4
    Kommentar von Frank Bültge

    @Dennis: tatsächlich, ist mir gar nicht aufgefallen, sollte ich erweitern und die Konstanten scheinen auch recht neu zu sein, da ich sie erst vor einigen Tagen extrahiert habe.. Danke !

    if ( !defined('WPMU_PLUGIN_DIR') )
    	define( 'WPMU_PLUGIN_DIR', WP_CONTENT_DIR . '/mu-plugins' ); // full path, no trailing slash
    
  5. 5
    Kommentar von Frank Bültge

    @Thomas: ja, die Lösung kenne ich, habe es mit Heiko entwickelt. In naher Zukunft wollen wir sie über WPD vertreiben, aber dazu sind noch einige Punnkte zu klären und ich wollte das ungern hier diskutieren.

  6. 6
    Kommentar von Ralf

    Thomas, der "weiche Übergang" dauert nun seit etlichenVersionen an. Das betrifft ja leider nicht nur die my-hacks.php, sondern auch viele Funktionen die, obwohl veraltet, mitgeschleppt werden. Teilweise hat man sogar Funktionen lediglich umbenannt, ansonsten hat sich nichts daran geändert.
    Würde man WP mit Windows vergleichen, würde Vista immer noch 8Bit-Anwendungen nativ unterstützen.

  7. 7
    Kommentar von Frank Bültge

    @Manuel: ja, aber dazu muss man den Code ändern, könnte schon in den Kommentaren erwähnt sein. Für Datum und Zeit muss die Ausgabe gelöscht werden, ändere:
    echo wptexturize('' . $title . ' ' . $pubDate . '');
    in
    echo wptexturize('' . $title . '');

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.

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.