WordPress

WordPress: Link in eigenen Menüs im neuen Fenster (target _blank) öffnen

WordPress: Link in eigenen Menüs im neuen Fenster (target _blank) öffnen

Es mag banal klingen, aber ich bin vorhin auf das Problem gestoßen und musste recht lange suchen, denn Menüpunkte der eigenen Menüs (unter Design -> Menüs) kann man durchaus im eigenen Fenster / Tab öffnen lassen (auch wenn man natürlich den User selbst darüber entscheiden lassen sollte, ob er den Link, den er verfolgen möchte, in einem neuen Fenster geöffnet haben möchte).

Dafür einfach die Optionen einblenden (oben rechts) und bei den erweiterten Menüeigenschaften das Linkziel anzeigen lassen. Danach hat man in jedem Menüpunkt die Auswahl, ob man den Link standardmäßig im gleichen Fenster (“Dasselbe Fenster oder derselbe Tab”) oder im neuen Fenster (“Neues Fenster oder Browser-Tab öffnen”) geöffnet haben möchte, siehe Screenshot.

Unter Design -> Menüs -> Optionen einblenden, kann man sich weitere Einstellungsmöglichkeiten der einzelnen Links anzeigen lassen.

Unter Design -> Menüs -> Optionen einblenden, kann man sich weitere Einstellungsmöglichkeiten der einzelnen Links anzeigen lassen.

Die weiteren Punkte sind:

  • CSS-Klassen, mit denen man durch die Vergabe einer eigenen Klasse z.B. einen Menüpunkt gesondert herausheben kann,
  • Link-Beziehungen (XFN), mit denen man das rel-Attribut eines jeden Links setzen kann, z.B. “nofollow”, falls man Suchmaschinen-Spider den Link nicht verfolgen lassen möchte und
  • Beschreibung, mit der man für  jeden Link einen Text verfassen und diese im Theme ausgeben kann, z.B. als Title-Text.

Quelle: http://codex.wordpress.org/Appearance_Menus_Screen

02. Juni 2011 von Benjamin Strilziw
Kategorien: Web, WordPress | Schlagwörter: | 8 Kommentare

WordPress: RSS-Feed mit Verzögerung senden

WordPress: RSS-Feed mit Verzögerung senden

Manchmal denkt man, man wäre fertig mit seinem Artikel und dann fehlt doch noch was. Huch?! Der Artikel hat ja gar kein Vorschaubild! Zum Glück ging der Artikel noch nicht in die Feedreader der Abonnenten. Und gerne fällt mir nach 5 Minuten noch etwas ein – z.B. die Quellenangabe. Dank dieses kurzen Schnipsels wird der RSS-Feed eine bestimmte Zeit später versendet. 15 Minuten klingt zwar viel, ist es aber eigentlich gar nicht, denn wenn sich gerade durch ein Telefonat ablenken lässt, kommen einen 15 Minuten gerade recht. ;)

Hier das Snippet für die functions.php des eigenen Themes:

// Verzögere RSS-Feed
function publish_later_on_feed($where) {
	global $wpdb;
 
	if ( is_feed() ) {
		// timestamp in WP-format
		$now = gmdate('Y-m-d H:i:s');
 
		// value for wait; + device
		$wait = '15'; // integer
 
		// http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timestampdiff
		$device = 'MINUTE'; //MINUTE, HOUR, DAY, WEEK, MONTH, YEAR
 
		// add SQL-sytax to default $where
		$where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait ";
	}
	return $where;
}
add_filter('posts_where', 'publish_later_on_feed');

Darüber gestoßen bin ich bei WPengineer.com – einer tollen Inspirations- und Informationsquelle rund um WordPress. :)

01. Mai 2011 von Benjamin Strilziw
Kategorien: Web, WordPress | Schlagwörter: , , | 1 Kommentar

WordCamp 2011 – Köln

WordCamp 2011 – Köln

Wie vorhin bekannt wurde, findet dieses Jahr am 24.09.2011 – einem Samstag – das WordCamp in Köln statt. Weitere Informationen findet ihr auf wordpress-deutschland.org und demnächst auf www.wordcamp.de.

Ich bin auch am Überlegen dort hinzufahren. :)

29. April 2011 von Benjamin Strilziw
Kategorien: Web, WordPress | Schreibe einen Kommentar

WordPress: Sonderzeichen im Slug

WordPress: Sonderzeichen im Slug

Ich arbeite gerade einem Plugin, welches auch automatisch Artikel mit der WordPress-Funktion wp_insert_post() anlegt. Leider hat WordPress ein Problem damit, wenn Sonderzeichen im Titel stehen. Das ist mit letztens schon unter die Nase gekommen, denn da wurden ® (Registered R, wirklich das Zeichen und nicht ®) einfach in… ja, ich muss gestehen, dass ich in 15min. Core-Gewühle nicht herausgefunden habe, warum aus ® %c2%ae wird. Aus “微速度撮影動画まとめ2” (sowas wie “Nature Timelapse 2″) wird in der Datenbank “%e5%be%ae%e9%80%9f%e5%ba%a6%e6%92%ae%e5%bd%(…)”. Es wird wohl vermutlich eine erweiterte Zeichenkodierung für alle Zeichen sein, ob nun Sonderzeichen oder japanische Schrift. Wer nochmal genau schauen möchte, sucht sich die formatting.php und plugin.php im Ordner /wp-includes und findet die Funktionen sanitize_title() und apply_filters().

Das Problem mit dem Registered R konnte ich so lösen, dass ich mit Frank Bültges Search & Replace-Plugin in der Tabelle posts die Titel (post_title und post_name, post_name ist der zu ändernde Slug) nach %c2%ae durchsucht und durch -r ersetzt habe.

Aber was tun, wenn man nicht nur ein bestimmtes Sonderzeichen in seinem Titel hat? Alle Posts nach solchen Zeichen durchsuchen?

Und was ist denn, wenn die Artikel in einem Plugin mit wp_insert_post() erstellt werden?

Glücklicherweise kann man dem post-Array den post_name (späterer Permalink) mitgeben. Und so sieht meine Funktion dann aus, die mir einen validen post_name generiert:

function createSlug($title, $length = 40) {
  $slug = strtolower($title);
  $slug = preg_replace("/[^a-z0-9\s-]/", "", $slug);
  $slug = trim(preg_replace("/[\s-]+/", " ", $slug));
  $slug = trim(substr($slug, 0, $length));
  $slug = preg_replace("/\s/", "-", $slug);
  return $slug;
}

Nachdem alle Großbuchstaben verkleinert wurden, verschwinden alle Zeichen außer Buchstaben von a-z, Zahlen, Minus- und Leerzeichen. Leerzeichen plus Minus wird durch ein Leerzeichen ersetzt (2 Minuszeichen hintereinander ergeben keine valide URL), von Leerzeichen am Anfang und Ende befreit und auf die gewünschte Länge gestutzt. Die letzten Leerzeichen werden noch durch Minuszeichen ersetzt und fertig ist der Permanlink.

Quelle

Nachtrag vom 28.04.2011 – 15:03 Uhr
Zufällig bin ich heute auf das Plugin “Germanix” (nicht im WordPress-Plugin-Repository erhältlich) von Thomas Scholz gestoßen, das mir zumindest das Problem mit dem ® abnimmt, ob es auch greift, wenn ich in meinem Plugin einen Artikel via wp_insert_post() anlege, kann ich erst heute Abend testen.

Nachtrag vom 28.04.2011 – 22:52 Uhr
Ja, mit aktiviertem Plugin wird auch der Slug geändert. Leider generiert Germanix bei dem Beispiel oben mit der japanischer Schrift auch zwei “–” Minuszeichen hintereinander, womit die URL nicht mehr funktionstüchtig ist. Mal sehen, was Thomas Scholz dazu sagt, meine Erkenntnis war bisher, dass man einfach nur die Funktionsaufrufe von remove_doubles() und lower_ascii() tauschen muss, damit im letzten Schritt doppelte Minuszeichen entfernt werden.

Nachtrag vom 29.04.2011 – 11:31 Uhr
Es wurde sich darum gekümmert. Reaktion und Bug-Beseitigung innerhalb von weniger als 24 Stunden – sehr löblich. :)

27. April 2011 von Benjamin Strilziw
Kategorien: Web, WordPress | 2 Kommentare