Software Guide

Die besten Tipps, Anleitungen und Downloads

Ihre Werbung auf Software Guide

Sie möchten in dieser Box oder an anderer Stelle dieser Webseiten eine Werbung schalten? Sehen Sie sich dazu am besten einfach mal die verschiedenen Möglichkeiten an.


WordPress Theme-Optimierungen

Im Folgenden behandle ich Optimierungen für WordPress-Themes.

Inhalt:

  1. Autor-Hervorhebung
  2. Bessere Titel-Anzeige
  3. Administrations-Menü auf dem Blog

Autor-Hervorhebung

Es gibt mehrere Plugins, die in den Kommentaren alle Kommentare des Blog-Autors entsprechend hervorheben, z.B. in einer anderen Hintergrundfarbe. Ich verwende allerdings die globale Variable $comment->user_id, wenn diese nämlich ungleich 0 ist, so ist der Kommentarschreiber kein Besucher sondern ein User des Blogs.
Zusätzlich verwende ich $comment->comment_author_email, dies gibt die Email-Adresse des Kommentierenden zurück. Diese vergleiche ich mit get_the_author_email(), also der Email des Artikel-Autors. Damit kann zuverlässig abgefragt werden, ob (a) der Kommentierende registriert ist und (b) ob dessen E-Mail-Adresse mit der des Artikel-Autors übereinstimmt.

Beispiel-Einsatz in der Theme-Datei comments.php:

<?php
global $comment;
if ( ($comment->comment_author_email == get_the_author_email()) && ($comment->user_id != 0) ) {
	echo "kommentar-autor";
} else {
	echo "kommentar-normal";
}
?>

Damit kann man in dem div des einzelnen Kommentars also eine jeweilige CSS-Klasse zuordnen, also je nachdem ob ein Besucher den Kommentar geschrieben hat oder der Artikel-Autor.

Bessere Titel-Anzeige

Der Titel einer Webseite hat entscheidenden Einfluß auf das Ranking in Suchmaschinen. WordPress zeigt im Browser normalerweise den Titel wie folgt an:
Wordpress-Titel im Browser

Besser für das Ranking in Suchmaschinen ist es jedoch, wenn der Titel des Artikels ganz am Anfang steht. Zudem kann man im Titel auch seitenrelevante Informationen anzeigen, z.B. wenn der Benutzer gerade die Suche benutzt, oder im Archiv unterwegs ist.

Ich habe daher folgenden Code erstellt, der all dies berücksichtigt:

<?php 
echo '	<title>';
if ( is_home() ) {
	// Blog's Home
	echo get_bloginfo('name') . '  &raquo; Weblog'; 
} elseif ( is_single() or is_page() ) {
	// Single blog post or page
	wp_title(''); echo ' - ' . get_bloginfo('name');
} elseif ( is_category() ) {
	// Archive: Category
	echo get_bloginfo('name') . ' &raquo; Kategorie: '; single_cat_title();
} elseif ( is_day() ) {
	// Archive: By day
	echo get_bloginfo('name') . ' &raquo; Alle Weblogartikel vom ' . get_the_time('d') . '. ' . get_the_time('F') . ' ' . get_the_time('Y');
} elseif ( is_month() ) {
	// Archive: By month
	echo get_bloginfo('name') . ' &raquo; Alle Weblogartikel vom ' . get_the_time('F') . ' ' . get_the_time('Y');
} elseif ( is_year() ) {
	// Archive: By year
	echo get_bloginfo('name') . ' &raquo; Alle Weblogartikel vom Jahr ' . get_the_time('Y');
} elseif ( is_search() ) {
	// Search
	echo get_bloginfo('name') . ' &raquo; Suche:  	&lsaquo;' . wp_specialchars($s, 1) . '&rsaquo;';
} elseif ( is_404() ) {
	// 404
	echo get_bloginfo('name') . '  &raquo; 404 - Angeforderte Seite nicht gefunden';
} else {
	// Everything else. Fallback
	bloginfo('name'); wp_title();
}
echo '</title>';
?>

In das Theme einbauen

In der header.php des Themes steht beim Default-Theme (Kubrick) folgender Code in
Zeile 7:

<title><?php bloginfo('name'); ?> <?php if ( is_single() ) { ?> &raquo; Blog Archive <?php } ?> <?php wp_title(); ?></title>

Diese Zeile löscht man und kopiert den obenstehenden Code an diese Stelle. Das war’s.
Das Ergebnis könnt Ihr auch hier auf Software Guide sehen, seht Euch einfach mal die Titel der verschiedenen Seiten an.

Administrations-Menü auf dem Blog

Admin Menu SmallEs gibt mehrere Plugins, die ein Administrations-Menü im Frontend – also im Blog selbst – einblenden, sobald ein Administrator angemeldet ist (z.B. Admin Menu, Easy Admin Access). Allerdings haben diese Menüs den Nachteil, dass nicht immer die Menüpunkte angezeigt werden, die man selbst am öftesten braucht. Zudem integrieren sich diese Menüs nicht immer gut in bestehende Themes.

Im Folgenden nun eine Lösung zur Integration ins eigene WordPress-Theme ganz ohne Plugin.

Folgenden Code, der das Admin-Menü ausgibt, baut man normalerweise in die header.php oder index.php des Themes ein, dabei entweder oberhalb oder gleich unterhalb des Blog-Headers:

<?php
global $user_ID;
get_currentuserinfo();

if ($user_ID) {
		echo '<div id="admin-menu">' . "\n";
		echo '<ul>' . "\n";
		echo '<li><a title="WordPress Administration" href="' . get_settings('siteurl') . '/wp-admin/">' . __('Administration') . '</a></li>';
		echo '<li><a title="Write new post" href="' . get_settings('siteurl') . '/wp-admin/post-new.php">' . __('Write Post') . '</a></li>';
		echo '<li><a href="' . get_settings('siteurl') . '/wp-admin/edit.php">' . __('Posts') . ' (' . mw_getQty('posts') . ') </a></li>';
		echo '<li><a href="' . get_settings('siteurl') . '/wp-admin/edit-comments.php">' . __('Comments') . ' (' . mw_getQty('comments_appr') . ') </a></li>';
		echo '<li><a href="' . get_settings('siteurl') . '/wp-admin/moderation.php">' . __('Comment Moderation') . ' (' . mw_getQty('comments_awaitmod') . ') </a></li>';
		if (function_exists('akismet_init'))
			echo '<li><a href="' . get_settings('siteurl') . '/wp-admin/edit-comments.php?page=akismet-admin">Akismet Spam (' . mw_getQty('comments_spam') . ')</a></li>';  	
		echo '<li><a href="' . get_settings('siteurl') . '/wp-login.php?action=logout&amp;redirect_to=' . $_SERVER['REQUEST_URI'] . '">&raquo; ' . __('Logout') . '</a></li>';
		echo '</ul>' . "\n";
		echo '</div> <!-- admin-menu -->' . "\n";
}


/*********************************************
 * Function:	mw_getQty
 * Purpose:		Determines the number of blog posts, number of comments, etc. 
 * Input:		$type: Typ
 * 				$int:  TRUE wenn Rückgabe als Integer, FALSE wenn Rückgabe als 
 * 						String mit Punkt als Tausender-Trennzeichen, z.B. 17.365   
 * Output:		Integer oder String, je nach number format
**********************************************/
function mw_getQty($type='posts', $int=false) {
	global $wpdb;

	switch ($type) {
		case 'posts':
			$query = "	SELECT COUNT(*) 
						FROM $wpdb->posts 
						WHERE post_status = 'publish'
						AND post_date < '" . current_time('mysql') . "'";
			break;
		case 'comments_appr':
			$query = "	SELECT COUNT(*) 
						FROM $wpdb->comments
						WHERE comment_approved = '1'";
			break;
		case 'comments_awaitmod':	// Number of comments awaiting moderation
			$query = "	SELECT COUNT(*) 
						FROM $wpdb->comments
						WHERE comment_approved = '0'";
			break;
		case 'comments_spam':	// Number of comments spam
			$query = "	SELECT COUNT(*) 
						FROM $wpdb->comments
						WHERE comment_approved = 'spam'";
			break;
	}


	$result = $wpdb->get_var($query);

	if ($int === false) {
		return number_format($result, 0, ',', '.');
	} else {
		return intval($result);	
	}

}
?>

Damit das Admin-Menü entsprechend formatiert wird, verwendet man CSS. Im Folgenden ein Beispiel, das in die style.css des Themes kopiert wird:

#admin-menu {
	border: 1px solid #aaa;
	background-color: #3C5B72;
	font-family: Arial, Helvetica, sans-serif; font-size: .9em;
}
#admin-menu ul {
	list-style: none;
}
#admin-menu ul li {
	background: none; display: inline; color: white; padding: 0;
}
#admin-menu a:link, #admin-menu a:visited {
	color: white;
}

Dieses muss natürlich entsprechend auf das Theme angepasst werden.

Das war es auch schon. Im PHP-Code des Admin-Menüs kann man die am häufigsten benötigten Menüpunkte jetzt noch entsprechend ergänzen bzw. anpassen.
Im obigen Beispiel wird dabei auch die Akismet-Spam-Moderation integriert, die Zahl in Klammern steht dabei für die Anzahl der derzeit als Spam erkannten und noch nicht moderierten Spam-Kommentare.
Hier noch ein Screenshot, wie das ganze auf Software Guide aussieht: Screenshot Admin-Menü.

Was ist ein Trackback?

8 Trackbacks/Pings:

  • 1

    hiegl.net - Martin Hiegl en Blog

    Trackback vom 8. Mai 2006, 12:59


    Fatal error: Uncaught Error: Call to undefined function eregi_replace() in /kunden/151212_80993/webseiten/wp/wp-content/themes/sw-guide2/functions.theme.php:465 Stack trace: #0 /kunden/151212_80993/webseiten/wp/wp-content/themes/sw-guide2/comments.php(84): swg_formatCommentExcerpt('<strong>Titel b...', 180) #1 /kunden/151212_80993/webseiten/wp/wp-includes/comment-template.php(1471): require('/kunden/151212_...') #2 /kunden/151212_80993/webseiten/wp/wp-content/themes/sw-guide2/index.php(148): comments_template() #3 /kunden/151212_80993/webseiten/wp/wp-includes/template-loader.php(74): include('/kunden/151212_...') #4 /kunden/151212_80993/webseiten/wp/wp-blog-header.php(19): require_once('/kunden/151212_...') #5 /kunden/151212_80993/webseiten/wp/index.php(17): require('/kunden/151212_...') #6 {main} thrown in /kunden/151212_80993/webseiten/wp/wp-content/themes/sw-guide2/functions.theme.php on line 465