Hier kommen alle Artikel rein die mit Wordpress zu tun haben.

WordPress in mehreren Sprachen. Mein Blog wird international.

Hallo,

heute nur ganz kurz.
Da meine Freunde und Leser mittlerweile sowohl aus deutschen als auch aus englisch-Sprachigen Menschen besteht, überlege ich schon lange den Blog in beiden Sprachen zu schreiben. Aber ich habe nie eine vernünftige Lösung gefunden… und mich auch vor der Arbeit gescheut.

Nun habe Ich endlich ein WordPress PlugIn gefunden mit dem man einen WordPressblog wirklich mehrsprachig gestalten kann. Das PlugIn heißt “qTranslate” und ist im WordPress-Pluginverzeichnis verfügbar.

Einfach das PlugIn installieren und noch die Einstellungen im Administrationsbereich vornehmen. Voreingestellt sind die Sprachen Deutsch, Englisch und Chinesisch (glaub ich). Das Chinesisch gleich erst einmal rauswerfen (außer man möchte es drin haben natürlich).

Dann sollte man dringendst “Verstecke Inhalt, der nicht für die gewählte Sprache verfügbar ist. ” anklicken, denn sonst passiert es das alle bereits vorhandenen Artikel auch in der anderen Sprache angezeigt werden. Das ergibt Dublicated Content.
Zu meiner Überraschung änderte sich aber nichts, nachdem ich es angeklickt hatte. Alle meine bereits vorhandenen deutschen Artikel wurden auch in der englischen Version angezeigt.
Wenn im Blog schon Artikel vorhanden sind, dann kopiert das Plugin diese gleich erstmal in alle anderen Sprachen. Das ist Mist. Kann aber einfach zurückgesetzt werden. Dazu klicken wir auf “Erweiterte Einstellungen” und dann unter “Datenbank konvertieren” auf das 2. “hier klicken” (vorsichtshalber vorher den Text durchlesen, falls sich mal was ändert).
Und dann kann es losgehen.

Wenn man nun einen Artikel oder eine Seite erstellt, dann erhält man für alle Sprachen ein eigenes Eingabefeld und kann somit die Seite tatsächlich mehrsprachig machen.

Warum nicht einfach eines der vorhandenen Plugins nehmen die die Seite automatisch übersetzen? Hast Du dir schon mal einen Text vom Google Translator vom englischen ins deutsche Übersetzen lassen? Ja? Dann weißt Du ja warum. Es kommt nur Mist bei raus. Man kann evtl. noch den Sinn entziffern, aber es ist nie ein korrektes Deutsch. So auch andersrum, wenn etwas in eine andere Sprache übersetzt wird.
Und da Google auf Qualität setzt erhält man nur gute Rankings mit qualitativen und guten Artikeln. Nicht das mein English perfekt wäre… aber besser als das von Google… hoffe ich :)

Wo wir gerade dabei sind. Da ich über 200 Artikel in meinem Blog habe (die teilweise auch sehr lang sind) wird es wohl eine ganze Weile dauern bis meine Seite vollständig übersetzt ist. Bitte etwas Geduld. :)

Viele Grüße
Gordon

Contact Form 7 sendet keine Emails

[WordPress] Contact Form 7 sendet keine E-Mails

Hallo zusammen,

heute mal wieder ein Problem mit einem WordPress Plugin. Nämlich Contact Form 7.

Das Plugin habe ich schon eine Weile im Blog und heute wollte es aktualisiert werden. Das habe ich auch gemacht und gleich mal geschaut ob es noch funktioniert. Und nein, tat es nicht :( Es gibt nur die Meldung “Das versenden der Nachricht war fehlerhaft. Bitte versuchen Sie es noch einmal zu einem späteren Zeitpunkt oder informieren Sie den Administrator.” aus und verweigert den Dienst. :(

Obwohl alle Einstellungen richtig waren hat es keine E-Mails verschickt. Nach ein bisschen Rumprobieren habe ich dann die Lösung zufällig gefunden. Sie ist schon ein wenig abstrakt… aber geht. Weiterlesen

[PHP] NextGEN Gallery – Sortierung der Galerien – Teil 2

Hallo,

ich hatte ja schon mal darüber geschrieben wie man die Bilder einer NextGen Galerie sortieren kann. Damals musste man sich noch durch den Code hangeln und ihn ändern… und beim nächsten Update war alles wieder futsch.

Jetzt habe ich vor ein paar Tagen eine elegantere Lösung gefunden. Die Galerie unterstützt nämlich die Zusammenarbeit mit benutzerdefinierten Feldern. Leider ist diese Information nicht einfach zu finden.

Aber um was geht es überhaupt genau?

Ich habe zum Beispiel meine Alben in den Galerien rückwärts Sortiert. Damit der Besucher immer oben die neusten Bilder sieht. Das macht Sinn, denke ich.
Nun erstellen wir einen Artikel und möchten dort auch ein Album einfügen. Weil man gerade etwas tolles Besucht hat und zig Fotos davon gemacht hat und man ein eigenes Album dafür angelegt hat.
Hier ist die Rückwärtssortierung jedoch Mist. Denn der Besucher soll ja in chronologischer Reihenfolge die Bilder sehen.

Leider kann man nicht für jedes Album die Reihenfolge einstellen. Also muss es anders gelöst werden. Und dafür gibt es eine Hilfe des Herstellers. Die benutzerdefinierten Felder.
Diese findet man unter dem eigentlichen Editor und sie heißen “Benutzerdefinierte Felder”… logisch :)

Dort trägt man Stück für Stück die Sachen ein die man braucht. Hier erst einmal eine Liste mit den möglichen Einstellmöglichkeiten.

Für das Erscheinungsbild der Nextgen-Gallery stehen folgende Befehle zur Verfügung.

Feldbezeichnungmögliche Werte
ngg_gal_ShowOrdergallery : Zeigt zuerst die Gallerie
slide : Zeigt zuerst die Slideshow
ngg_gal_Images0-xxx : (Nummer) Anzahl von Bildern pro Seite
ngg_gal_Sort“pid” : Sortiert die Vorschaubilder nach ID
“filename” : Sortiert die Vorschaubilder nach Dateiname
“alttext” : Sortiert die Vorschaubilder nach dem ALT oder TITEL Text
ngg_gal_SortDirection“ASC” : Aufsteigende Sortierung
“DESC” : Absteigende Sortierung
ngg_gal_ShowSlide0 : (Off) Kein Slideshow Link
1 : (On) Zeigt Slideshow Link
ngg_gal_ImgageBrowser0 : (Off) Zeigt die Bilder direkt
1 : (On) Zeigt den Bildbrowser

Und für das Erscheinungsbild der Nextgen-Slideshow die folgenden:

ngg_ir_Audio“url”: (URL) Spielt eine Musikdatei
ngg_ir_Overstretchnone : Behält Original-Dimensionen
fit : Bilder unverhältnismäßig vergrößern
true : Bilder verhältnismäßig vergrößern
ngg_ir_TransitionSetzt den Übergangseffekt zwischen den Bildern:
fade, bgfade, blocks, bubbles, circles, flash, fluids, lines, random, slowfade
ngg_ir_Backcolor0xHXHXHX : (z.B. 000FFF)
Hintergrundfarbe der Steuerung, im HEX Format.
ngg_ir_Frontcolor0xHXHXHX : (z.B. 000FFF)
Text und Button Farbe der Steuerung, im HEX Format.
ngg_ir_Lightcolor0xHXHXHX : (z.B. 000FFF)
Überlappende Farbe der Steuerung, im HEX Format.
ngg_ir_Width0-xxx : (Zahl) Breite der Slideshow
ngg_ir_Height0-xxx : (Zahl) Höhe der Slideshow
ngg_ir_Rotatetime0-xxx : (Zahl) Zeit die ein Bild stehen bleibt
ngg_ir_Shuffle0 : (Off) Anzeige der Bilder in Reihenfolge
1 : (On) Zufälliges Bild anzeigen
ngg_ir_ShowNavigation0 : (Off) Navigation deaktivieren
1 : (On) Navigation aktivieren
ngg_ir_ShowWatermark0 : (Off) Kein Wasserzeichen (Logo)
1 : (On) Wasserzeichen (Logo) wird angezeigt
ngg_ir_Kenburns0 : (Off) Ken burns Effekt aktivieren
1 : (On) Ken burns Effekt deaktivieren

In unserem Fall würden wir nun das benutzerdefinierte Feld “ngg_gal_SortDirection” mit dem Wert “ASC” anlegen. Und schon wäre das Album in diesem Post aufsteigend sortiert.

Man könnte auch mehrere Befehle miteinander kombinieren (mehrere benutzerdefinierte Felder ausfüllen). So wie man es braucht.

Ich hoffe das konnte euch (und mir) helfen. :)

Viele Grüße
Gordon

[WordPress] Kommentarlinks einfach mit external, (no)follow und target=_blank

Hallo,

heute mal wieder einen Tipp zu WordPress.

Es ist hart umstritten… Kommentarlinks mit external oder ohne, follow oder nofollow und welchen target soll der Link haben. Die einen sagen Hü, die anderen Hot. Egal, jeder soll machen wie er mag. Doch wie macht man wie man mag?

Eigentlich ganz einfach. Zumindest wenn man alle Kommentarlinks gleich haben will. Also zum Beispiel sollte rel=”external” immer drin stehen, denn schließlich sind die Kommentarlinks external, es sei denn man selbst Kommentiert.

Dazu ruft man einfach seine “functions.php” in einem Editor auf und fügt am Ende, vor “?>” den folgenden Code ein. Natürlich dabei den Linkcode so bearbeiten wie man es mag.

// Kommentarlinks in neuem Tab / Fenster
    function comment_author_link_window() {
	    global $comment;
	    $url = get_comment_author_url();
	    $author = get_comment_author();
	
	    if ( empty( $url ) || 'http://' == $url) {
	    	$return = $author;
    	}
    	elseif(stristr($url, get_home_url())) {
	    	$return = "<a href='".$url."'>".$author."</a>";
    	} else {
	    	$return = "<a href='".$url."' rel='external nofollow' target='_blank'>".$author."</a>";
    	}
	    return $return;
    }
    add_filter('get_comment_author_link', 'comment_author_link_window');

Und schon werden alle Kommentarlinks mit den Attributen versehen die man haben möchte.

Ich persönlich habe alles gesperrt. Also rel=”external nofollow” und auch target=_blank. Viele werden jetzt denken “Was für nen Arsch.”. Aber externe Links sind nunmal “external”. Bei den Kommentaren die ich hier bekomme weiß ich manchmal nicht mehr ob es nur zum Abgreifen eines Links ist oder nicht. Daher “nofollow” und gut. Wer einen Kommentar schreibt, der tut es weil er etwas zu meinem Artikel beitragen möchte und nicht damit seine Seite besser rankt. Und external… ich mag meine Leser und möchte bitte auch das Sie auf meiner Seite bleiben! Finish :)

Bug in WordPress XMLRPC wp.uploadfile – Dateiupload funktioniert nicht!

Gerade habe ich einen Bug in der XMLRPC-Schnittstelle von WordPress gefunden. Anscheinen nutzt diese Funktion aber wohl kaum jemand, wenn es noch keinem Aufgefallen ist. Ich habe aber genau diese Klasse kopiert und in einem anderen Projekt verwendet, um es mir mal einfacher zu machen. :-)

Der Bug befindet sich in der wp.uploadFile aka mw_newMediaObject Funktion. Mit dieser Funktion können Dateien über die XMLRPC-Schnittstelle in den Blog geladen werden.
Das Problem, es funktioniert nur nicht wirklich. Die Daten müssen per base64_encode codiert werden. Hab ich auch brav gemacht, nur werden sie im Blog nicht wieder decodiert und damit genau so gespeichert wie sie übertragen werden. Das kann jedoch nicht funktionieren.

Also habe ich mich auf die Suche gemacht und den Fehler gefunden. Die XMLRPC Klasse von WordPress (class-IXR.php) erkennt auf der Client-Seite Base64-Codierte Strings nicht. Ich habe im Netz auch keine Möglichkeit gefunden wie man prüfen kann ob ein String im Base64-Format vorliegt. Daher habe ich zu einer anderen Möglichkeit gegriffen den Bug zu fixen.

Wir gehen mal wieder in den Code. Achtung: Wenn diese Änderung im Blog selbst vorgenommen wird, wird es beim nächsten Update überschrieben!
Als erstes nehmen wir uns ca. Zeile 35 vor. Hier sollte folgendes stehen:

foreach ($this->data as $key => $value) {
     $this->data[$key] = new IXR_Value($value);
}

Das ändern wir in:

foreach ($this->data as $key => $value) {
     if($key == "bits") $this->data[$key] = new IXR_Value($value, "base64");
     else $this->data[$key] = new IXR_Value($value);
}

Soweit ich gesehen habe gibt es den “bits” Parameter nur ein mal in der Schnittstelle. Und zwar genau dort wo der Base64-String unserer Datei drin ist. Also sagen wir “Wenn Parameter ‚bits’ ist, dann ist es Base64. Und schon schalten wir die automatische – und falsche – Erkennung des Variablen-Types aus und sagen gleich das es Base64 ist.

Dann gehen wir noch zu einem anderen Bug. Der ist ca. in Zeile 114. Die Originalzeile heißt:

case 'date':
     case 'base64':
          return $this->data->getXml();
          break;

Das gibt einen Fehler. Die Funktion getXml() gibt es unter $this->data nicht und wäre auch Schwachsinn.  Die Zeilen müssen wie folgt aussehen:

case 'date':
          return $this->data->getXml();
          break;
     case 'base64':
          return '<base64>'.$this->data.'</base64>';
          break;

So, jetzt sollte es funktionieren.

Wie gesagt, wenn ihr die Klasse kopiert habt und in einem anderen Projekt verwendet, dann ist es ok. Wenn ihr es im WordPress selbst ändert dann wird es beim nächsten Update überschrieben.

[WordPress] FTP Daten für automatische Updates festlesen

Da wir heute gerade schon mal beim Thema waren. Hier gleich noch ein Beitrag zu den automatischen Updates. Normalerweise fragt WordPress immer nach den FTP Daten um die Updates zu installieren. Man kann diese jedoch auch in der wp-config.php selbst (und fest) vorgeben. Dann müssen sie einerseits nicht mehr ständig eingegeben werden und es verringert auch das Sicherheitsrisiko (sagen jedenfalls die Experten :-) ).

Also wp-config.php öffnen und irgendwo – am besten nach den SQL Daten – die folgenden Parameter eintragen (und konfigurieren natürlich).

define('FTP_HOST', 'musterdomain.de');
define('FTP_USER', 'ftp_user');
define('FTP_PASS', 'ftp_paswort');

Die folgenden Zeilen müssen nicht angegeben werden. Wenn Du weißt was Du tust, dann kannst Du auch hier eigene Einstellungen vornehmen.

define('FTP_SSL', true); //SSL Verschlüsselter Upload
define('FTP_BASE', '...'); //Root Verzeichnis der Wordpress Installation
define('FTP_CONTENT_DIR', '...'); //wp-content Verzeichnis
define('FTP_PLUGIN_DIR', '...'); //wp-plugin Verzeichnis
define('FS_METHOD', 'direct'); //FTP Methode

[WordPress] Automatisches Update funktioniert nicht

Ich habe schon seid einer Weile ein Problem mit meinen automatischen Updates im WordPress. Er bricht das Update gleich mit der Fehlermeldung: “Das Verzeichnis “wp-content” konnte nicht gefunden werden.” ab.

Dazu muss ich sagen das ich auf einen Webspace umgezogen bin und nun alles irgendwie in einem Root Verzeichnis, in verschiedenen Unterverzeichnissen, liegt. Das ganze wird über einen FTP Zugang gemanaged.

Schnelle Abhilfe schafft man sich indem man WordPress einfach den richtigen Pfad vorgibt. Dann weiß WordPress wieder wohin mit den Daten und alles ist schick ;-)
Dazu einfach den folgenden Code in die wp-config.php einfügen, irgendwo.

putenv('TMPDIR=' . ini_get('upload_tmp_dir'));

Speichern, hochladen und alles sollte wieder laufen.

1und1, WordPress Blogs und der 500 Internal server error

Hallo,

da hatte ich doch gerade mal wieder ein Problem. Kommt ja ab und zu mal vor :-) Und wie es scheint habe ich den nicht alleine. Es gibt schon einige User mit dem Problemchen.

Ich wollte auf einem 1und1 Webspace einen WordPress Blog installieren (V. 3.0.01) und bekam probt einen “500 Internal Server Error”.

Die Lösung ist einfach, aber normalerweise kommt man darauf selbst nur schwer, da er absolut unnatürlich ist :-)

Den folgenden Code in die .htaccess einfügen und der Blog sollte laufen.

AddType x-mapp-php5 .php 
AddHandler x-mapp-php5 .php

[WordPress] HTML-Dateiendung in Artikeln, Seiten, Tags und Kategorien

Hallo zusammen,

ich spiele ja in der letzten zeit auch endlich mal ein bisschen mit SEO rum und überhaupt hat es mich schon eine weile gestört das in wordpress keine vernünftigen dateiendungen integriert sind. Google mag es mit sicherheit nicht wenn eine url auf “…/category/fun” endet… ohne slash ohne “.html” … ohne alles. Einfach zu ende.

Nun ist es sehr einfach bei wordpress an jeden artikel ein “.html” anzuhängen. Das kann man ganz einfach in den permalinks in den optionen einstellen. Möchte man das auch bei seiten und sogar bei den kategorien machen… hat man schon ein problem.
Und so habe ich mich auf die suche begeben und bin fündig geworden.

Ich bin über 10 ecken auf das plugin “.html on pages” aufmerksam geworden. Das ist erst einmal teilweise was ich suchte. Denn das dieses plugin fügt nur bei seiten die dateiendung “.html” hinzu… nicht bei kategorien. :-(

Also selbst ein bisschen rumgefummelt und siehe da… nun geht es auch bei den kategorien. :-) Da mein blog noch immer code nicht vernünftig darstellt habe ich das überarbeitete plugin einfach noch mal gezippt und du kannst es >hier< downloaden. Ich habe auch die readme.txt noch mal erweitert.

Nun gab es aber gleich noch ein problem. Mein blog besteht ja nun schon eine weile und es gibt schon so einige urls die auch bei google indexiert sind und verlinkungen zu anderen seiten. Also würden alle anfragen auf die alten urls auf der 404 seite landen. Das wäre natürlich nicht so toll.
Daher musste noch ein 301 redirect her. Der kommt in die .htaccess über die regeln von wordpress – logisch. Hier der htaccess code:

RewriteCond %{REQUEST_URI} ^/[^.]+[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1.html [L,R=301]

Damit werden alle seiten ohne .html und ohne slash (/) am ende mit der endung “.html” versehen. … Damit haben wir es … oder?

Nee, leider immer noch nicht. Ein kleiner fehler ist mir – bis jetzt – aufgefallen. Möchte ich meinen rss-feed abrufen… schickt er mich auf die 404-seite (seite nicht gefunden). Warum? Auch er bekommt ein “.html” angehängt… aber der feed kann damit nicht aufgerufen werden. Er funktioniert immer noch ohne. Also schnell noch ein eintrag in der .htaccess. Am besten ganz oben:

RewriteRule ^feed$ feed/ [L,R=301]

So, jetzt bekommt er ein slash und wird damit von der anderen regel ignoriert.

Nun haben wir es erst einmal. :-)
Bitte beachtet das eine änderung in den permalinks im adminmenü die .htaccess änderungen unter umständen wieder rausschmeißt.

—-

Ach gleich das nächste problem. Ok, durch die rewrite rule wird nun überall .html hinzugefügt. Das ist nicht immer schön. Ich habe noch die nextgen galerie installiert. Die arbeitet nun natürlich auch nicht mehr. :-( Denn auch sie kann mit den html-endungen nicht umgehen. Mist…
Also wer noch andere urls braucht der muss die htaccess regel modifizieren. Ich habe meine jetzt geändert zu:

RewriteCond %{REQUEST_URI} ^/[^.]+[^/]$
RewriteCond %{REQUEST_URI} !^/nggallery/[^.]+[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1.html [L,R=301]

Damit sage ich “nur wenn in der url nicht ‘nggallery/’ enthalten ist.

Ich hoffe es geht alles gut :-)

CU
Gordon

Update:
Da muss ich gleich noch mal ein Update hinterherschießen. Habe gerade festgestellt es gibt ja auch noch die Tags. :-) Habe das Plugin auch gleich noch mal modifiziert. Jetzt werden die urls für seiten, kategorien und tags unterstützt. Artikel urls kannst du ja selbst im administrationsbereich einstellen.

[WordPress] Geheime Einstellungsmöglichkeiten

Hallo zusammen,

gerade habe ich weder einmal etwas dazugelernt.

Ich wollte meinen RSS-Feed bei portalen eintragen und da meinte eines doch glatt das sie keine englischen feeds aufnehmen… :-o Wie, english? Wie kommen die denn darauf?
Ganz einfach, weil mein rss-feed auf english (en) steht.

Gut… wie ändere ich das jetzt? Alle einstellungsseiten durchgesehen… nix gefunden. Ich wollte schon wieder in den quellcode gehen als ich noch eine andere, höchst interessante, lösung fand. Es gibt nämlich bei wordpress eine einstellungsseite auf die man normalerweise nicht gelangt. Kein link im menü führt dorthin… eine geheime einstellungsseite quasi :-)

Wie kommt man nun dort hin. Erst einmal ins backend einloggen. Dann nach “wp-admin/” options.php eingeben. Also so das die url in etwa so aussieht: http://www.domain.de/wp-admin/options.php

Hier gibt es (zwischen den vielen anderen) die einstellmöglichkeit “rss-language”… hier muss man “de” eingeben. Und schon ist der rss-feed auch in deutsch.

Aber auf der seite gibt es noch zig andere einstellmöglichkeiten… in denne niemand rumfummeln sollte der nicht weiß was er tut… deswegen ist sie auch so gut versteckt ;-)

Viele Grüße
Gordon