WordPress als CMS benötigt etwas Feintuning
WordPress wird immer häufiger als CMS eingesetzt. Als Admin und Webmaster seines persönlichen Blogs, sollte man nicht übermäßig viele Plugins installieren, da diese meist viel Code schreiben und so die Webseite langsamer laden lassen.
Das wollen wir doch nicht.
Außerdem kann man mit den hier beschriebenen Codes/Hacks aus dem normalen WordPress Theme ein ganz spezielles und personalisiertes Theme erstellen.
Folgende Hacks sind eine persönliche Auswahl der besten Codes von WpRecipes.
1. Tags in einem Drop-Down Menü anzeigen lassen
In eurem Theme Ordner findet ihr eine .php Datei namens “funktions.php”. Falls euer WordPress Theme bis jetzt ohne ausgekommen ist, erstellt ihr eine.
In diese Datei kopiert ihr nun einfach folgenden Code:
function dropdown_tag_cloud( $args = '' ) {
$defaults = array(
'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45,
'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC',
'exclude' => '', 'include' => ''
);
$args = wp_parse_args( $args, $defaults );
$tags = get_tags( array_merge($args, array('orderby' => 'count', 'order' => 'DESC')) ); // Always query top tags
if ( empty($tags) )
return;
$return = dropdown_generate_tag_cloud( $tags, $args ); // Here's where those top tags get sorted according to $args
if ( is_wp_error( $return ) )
return false;
else
echo apply_filters( 'dropdown_tag_cloud', $return, $args );
}
function dropdown_generate_tag_cloud( $tags, $args = '' ) {
global $wp_rewrite;
$defaults = array(
'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45,
'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC'
);
$args = wp_parse_args( $args, $defaults );
extract($args);
if ( !$tags )
return;
$counts = $tag_links = array();
foreach ( (array) $tags as $tag ) {
$counts[$tag->name] = $tag->count;
$tag_links[$tag->name] = get_tag_link( $tag->term_id );
if ( is_wp_error( $tag_links[$tag->name] ) )
return $tag_links[$tag->name];
$tag_ids[$tag->name] = $tag->term_id;
}
$min_count = min($counts);
$spread = max($counts) - $min_count;
if ( $spread < = 0 )
$spread = 1;
$font_spread = $largest - $smallest;
if ( $font_spread <= 0 )
$font_spread = 1;
$font_step = $font_spread / $spread;
// SQL cannot save you; this is a second (potentially different) sort on a subset of data.
if ( 'name' == $orderby )
uksort($counts, 'strnatcasecmp');
else
asort($counts);
if ( 'DESC' == $order )
$counts = array_reverse( $counts, true );
$a = array();
$rel = ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) ? ' rel="tag"' : '';
foreach ( $counts as $tag => $count ) {
$tag_id = $tag_ids[$tag];
$tag_link = clean_url($tag_links[$tag]);
$tag = str_replace(' ', ' ', wp_specialchars( $tag ));
$a[] = "\t<option value='$tag_link'>$tag ($count)</option>";
}
switch ( $format ) :
case 'array' :
$return =& $a;
break;
case 'list' :
$return = "<ul class='wp-tag-cloud'>\n\t<li>";
$return .= join("</li>\n\t<li>", $a);
$return .= "</li>\n</ul>\n";
break;
default :
$return = join("\n", $a);
break;
endswitch;
return apply_filters( 'dropdown_generate_tag_cloud', $return, $tags, $args );
}
?>
Nun öffnet ihr die Datei in der das Drop-Down Menü erscheinen soll. Vielleicht in eurer Sidebar?
In die jeweilige Datei fügt ihr folgenden Code ein:
2. Deine neusten Notizen abrufen lassen
Folgenden Code vor den Loop einfügen. Dieser Code wird die letzten 5 Notizen aufrufen. Die Menge der abzurufenden Notizen kann durch die Zahl im Code bestimmt werden.
$sticky = get_option('sticky_posts');
rsort( $sticky );
$sticky = array_slice( $sticky, 0, 5);
query_posts( array( 'post__in' => $sticky, 'caller_get_posts' => 1 ) );
?>
3. Automatisch weiteren Inhalt in die Feeds integrieren
In euren Theme Ordner findet sich die “functions.php” Falls nicht erstellt ihr einfach eine.
In diese Datei fügt ihr folgenden Code ein.
Dieser wird automatisch alle weiteren Inhalte nach eurem Beitrag mit in den Feed einfügen.
Also etwas wie “ähnliche Artikel” oder “Informationen über den Autor”, oder eure AdSense Werbung, …
if(!is_feed() && !is_home()) {
$content.= "<h4>Enjoyed this article?</h4>";
$content.= "<p>Subscribe to our <a href='#'>RSS feed</a></p>";
}
return $content;
}
add_filter ('the_content', 'insertFootNote');
4. Die meist kommentierten Artikel auflisten
Den folgenden Code einfach an der Stelle einfügen, wo ihr eure meist kommentierten Artikel anzeigen lassen wollt. Vielleicht in der Sidebar (sidebar.php)?
Um die Anzahl der gezeigten Artikel zu ändern, einfach die “5″ in Zeile drei gegen die gewünschte austauschen.
<ul>
<?php $result = $wpdb->get_results("SELECT comment_count,ID,post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , 5");
foreach ($result as $post) {
setup_postdata($post);
$postid = $post->ID;
$title = $post->post_title;
$commentcount = $post->comment_count;
if ($commentcount != 0) { ?>
<li><a title="<?php echo $title ?>" href="<?php echo get_permalink($postid); ?>">
<?php echo $title ?></a> {<?php echo $commentcount ?>}</li>
<?php } } ?></ul>
5. Meist kommentierten Artikel eines ganzen Jahres anzeigen
Die meist kommentierten Artikel aus einem bestimmten Jahr anzeigen lassen.
Der Zeitabschnitt kann beliebig angepasst werden. Den Code einfach an der Stelle einfügen, wo ihr den Code angezeigt bekommen wollt.
<ul>
<?php
$result = $wpdb->get_results("SELECT comment_count,ID,post_title, post_date FROM $wpdb->posts WHERE post_date BETWEEN '2008-01-01' AND '2008-12-31' ORDER BY comment_count DESC LIMIT 0 , 10");
foreach ($result as $topten) {
$postid = $topten->ID;
$title = $topten->post_title;
$commentcount = $topten->comment_count;
if ($commentcount != 0) {
?>
<li><a href="<?php echo get_permalink($postid); ?>"><?php echo $title ?></a></li>
<?php }
}
?></ul>
6. Ähnliche Artikel basierend auf den Tags anzeigen
Dieser Code wird ähnliche Artikel basieren auf den Artikel Tags anzeigen lassen. Er muss in den Loop integriert werden.
//for use in the loop, list 5 post titles related to first tag on current post
$tags = wp_get_post_tags($post->ID);
if ($tags) {
echo 'Related Posts';
$first_tag = $tags[0]->term_id;
$args=array(
'tag__in' => array($first_tag),
'post__not_in' => array($post->ID),
'showposts'=>5,
'caller_get_posts'=>1
);
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<a title="Permanent Link to <?php the_title_attribute(); ?>" rel="bookmark" href="<?php the_permalink() ?>"><?php the_title(); ?></a>
<?php
endwhile;
}
}
?>
7. Die Zahl der Suchergebnisse anzeigen
Öffnet die “search.php” und integriert folgenden Code:
8. Die Seitenzahl der Kommentare im “Title Tag” anzeigen
Die “header.php” öffnen und folgenden Code zwischen das “Title Tag” einfügen.
else { echo (' - comment page '); echo ($cpage);}
?>
9. Die zukünftig veröffentlichten Artikel anzeigen
Um den Lesern einen kleinen Einblick über kommende Überschriften zu ermöglichen, kopiere folgenden Code und füge ihn an gewünschter Stelle ein.
<?php query_posts('showposts=10&post_status=future'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php the_title(); ?> <?php the_time('j. F Y'); ?>
<?php endwhile; else: ?>
Keine zukünftigen Artikel gespeichert.
<?php endif; ?>
10. Artikel zufällig anordnen
Artikel zufällig anzuordnen hat zum Beispiel Vorteile um ältere Artikel nicht untergehen zu lassen.
Den Code einfach vor den Loop einfügen.
//the Loop here...
11. Zählt die Wörter eines Artikels und zeigt sie an
Öffne “single.php” und integriere den Code wo dieser angezeigt werden soll.
$words = 0;
$str = eregi_replace(" +", " ", $str);
$array = explode(" ", $str);
for($i=0;$i < count($array);$i++)
{
if (eregi("[0-9A-Za-zÀ-ÖØ-öø-ÿ]", $array[$i]))
$words++;
}
return $words;
}?>
Wortzahl: <?php echo count_words($post->post_content); ?>
12. Wortzähler für WordPress
Hier noch eine weitere Möglichkeit einen Wortzähler in den Blog zu integrieren.
In eurer “functions.php” fügt ihr diesen Code hinzu:
ob_start();
the_content();
$content = ob_get_clean();
return sizeof(explode(" ", $content));
}?>
Um an gewünschter Stelle die gezählten Wörter eures Artikels anzuzeigen, kopiert in der jeweiligen Datei diesen Code:
13. Kategorien von der Suche ausschließen
In “search.php” eures Themes folgenden Code vor den Loop einfügen.
Dieser Code wird Kategorien mit den IDs 1,2,3 von der Suche ausschließen.
Natürlich nicht von der Google Suche, sondern der internen WordPress Suche auf eurem Blog.
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts("s=$s&paged=$paged&cat=-1,-2,-3");
endif; ?>
//the Loop here...
14. Bestimmte Kategorien aus dem RSS Feed ausschließen
Die “functions.php” eures Themes öffnen. Falls sie nicht existiert, dann erstellt eine.
Dieser Code schließt bestimmt Kategorien aus. Kopiert ihr einfach in die “functions.php”. Um eine bestimmte Kategorie auszuschließen benötigt ihr ihre ID.
if ($query->is_feed) {
$query->set('cat','-5'); //Don't forget to change the category ID =^o^=
}
return $query;
}
add_filter('pre_get_posts','myFilter');
?>
15. Die Zahl eurer Twitter Follower anzeigen lassen
Diesen Code einfach irgendwo in eurem WordPress Blog integrieren, er wird an der Stelle die Zahl eurer Follower anzeigen.
In der letzten Zeile des Codes müsst ihr noch die “YourUserID” durch eure ersetzen.
if($short_string>=strlen($long_string))return false;
$insertion_length=strlen($long_string)-strlen($short_string);
for($i=0;$i<strlen ($short_string);++$i){
if($long_string[$i]!=$short_string[$i])break;
}
$inserted_string=substr($long_string,$i,$insertion_length);
if($is_html && $inserted_string[$insertion_length-1]=='<'){
$inserted_string='<'.substr($inserted_string,0,$insertion_length-1);
}
return $inserted_string;
}
function DOMElement_getOuterHTML($document,$element){
$html=$document->saveHTML();
$element->parentNode->removeChild($element);
$html2=$document->saveHTML();
return string_getInsertedString($html,$html2,true);
}
function getFollowers($username){
$x = file_get_contents("http://twitter.com/".$username);
$doc = new DomDocument;
@$doc->loadHTML($x);
$ele = $doc->getElementById('follower_count');
$innerHTML=preg_replace('/^< [^>]*>(.*)< [^>]*>$/',"\\1",DOMElement_getOuterHTML($doc,$ele));
return $innerHTML;
}
?>
<?php echo getFollowers("YourUserID")." followers"; ?>
</strlen>
16. Den letzten Twitter Eintrag auf eurem Blog anzeigen
Einfach den Code an gewünschter Stelle einfügen. Vielleicht in der Sidebar.php?
Den “TwitterUsername” müsst ihr natürlich noch durch euren ersetzen.
$username = "TwitterUsername";
$prefix = "<h2>Mein letzter Tweet:";
$suffix = "";
$feed = "http://search.twitter.com/search.atom?q=from:" . $username . "&rpp=1";
function parse_feed($feed) {
$stepOne = explode("<content type=\"html\">", $feed);
$stepTwo = explode("</content>", $stepOne[1]);
$tweet = $stepTwo[0];
$tweet = str_replace("< ", "< ", $tweet);
$tweet = str_replace(">", ">", $tweet);
return $tweet;
}
$twitterFeed = file_get_contents($feed);
echo stripslashes($prefix) . parse_feed($twitterFeed) . stripslashes($suffix);
?>
17. Social Buttons im Blog einfügen
Facebook Button
Digg it!
Stumbleupon
Zu Del.ici.ous hinzufügen
Technorati
18. Eine LogIn Box für den WordPress Blog
Wenn man WordPress als CMS benutzt und sich mehrere Benutzer anmelden wollen, ist es oft sehr sinnvoll eine LogIn Box zu erstellen.
Hier der Code für eine Login Box zum Beispiel in der Sidebar oder im Header, oder einfach auf einer extra Login Seite …
Den folgenden Code einfach kopieren und an der Stelle einfügen, wo eure Loginbox erscheinen soll.
Dann müsst ihr noch in der letzten Zeile eure URL hinzufügen.
<h2>Login</h2>
<form action="<?php echo get_option('home'); ?>/wp-login.php" method="post">
<input type="text" name="log" id="log" value="<?php echo wp_specialchars(stripslashes($user_login), 1) ?/>" size="20" />
<input type="password" name="pwd" id="pwd" size="20" />
<input type="submit" name="submit" value="Send" class="button" />
<p>
<label for="rememberme"><input name="rememberme" id="rememberme" type="checkbox" checked="checked" value="forever" /> Remember me</label>
<input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?/>" />
</p>
</form>
<a href="<?php echo get_option('home'); ?>/wp-login.php?action=lostpassword">Recover password</a>
<?php } else { ?>
<h2>Logout</h2>
<a href="<?php echo wp_logout_url(urlencode($_SERVER['REQUEST_URI'])); ?>">logout</a><br />
<a href="http://XXX/wp-admin/">admin</a>
<?php }?>
P.S.:
Hmm, sind doch nur 18. Codes geworden, weil zwei von denen komisch angezeigt wurden.
Hier noch die Links zu den Codes die ich nicht einfügen konnte (Warum auch immer):
-> Den gesuchten Text von Suchmaschinen im Artikel hervorheben
-> Willkommensmeldung zu einem bestimmten Datum anzeigen
Wünsche viel Spaß beim Coden
Roman
Ähnliche Beiträge
Vielleicht interessieren dich diese ähnlichen Artikel.











3 Kommentare
Paul says:
Jan 9, 2011
nice!
alex says:
Jan 7, 2011
vielen Dank für den Code für die LoginBox! Sehr hilfreich!!!
Daniel says:
Jul 30, 2009
Sehr schöne Sammlung an Code-Snipes. Thx