Erweiterte Autoreninformationen ohne Plugin anzeigen

Realisiert werden soll die Anzeige von Autoreninformationen in der Einzelansicht von Beiträgen ohne Plugin. Folgende Punkte sollen angezeigt bzw. beachtet werden:

  • Links zur Website des Autors und ggf. sozialen Netzwerken, sofern diese Informationen im Profil angegeben sind
  • bisher verfasste Beiträge verlinkt mit dem individuellen Archiv des Autoren
  • Ausgabe des Website-Namens im Text via Abfrage, damit die Lösung variabel einsetzbar ist

Über die functions.php oder via Plugin werden benutzerdefinierte Autorenangaben möglich. In einer Multisite-Umgebung präferiere ich den Einsatz dieser Kontaktangaben netzwerkweit, also über ein Must-Use-plugin zu definieren. Zur Übersichtlichkeit auf der Profil-Seite werden dort zunächst AIM, Jabber und YIM deaktiviert.

function custom_contactmethods( $contactmethods ) {
  unset($contactmethods['aim']);
  unset($contactmethods['jabber']);
  unset($contactmethods['yim']);
  $contactmethods['twitter'] = 'Twitter';
  $contactmethods['facebook'] = 'Facebook';
  $contactmethods['xing'] = 'XING';
  return $contactmethods;
}
add_filter('user_contactmethods','custom_contactmethods',10,1);

single.php

<div class="postauthor">
  <p class="postauthorabout">&Uuml;ber den Autor<p>
  <h2><?php the_author(); ?></h2>
  <p class="postauthorbio"><?php if(get_the_author_meta('description') != NULL) { ?><?php the_author_meta('description'); ?> <?php } ?>
  Auf <?php bloginfo('name'); ?> stammen <a href="<?php echo get_author_posts_url( get_the_author_meta( 'ID' ) ); ?>" title="Alle Beitr&auml;ge von <?php the_author(); ?>"><?php the_author_posts(); ?> Beitr&auml;ge</a> aus der Feder von <?php the_author_meta('user_firstname'); ?>.</p>
  <p class="postauthorlinks">
  <?php if(get_the_author_meta('user_url') != NULL) { ?><a href="<?php the_author_meta('user_url'); ?>">Website</a> <?php } ?>
  <?php if(get_the_author_meta('facebook') != NULL) { ?><a href="<?php the_author_meta('facebook'); ?>">Facebook</a> <?php } ?>
  <?php if(get_the_author_meta('twitter') != NULL) { ?><a href="<?php the_author_meta('twitter'); ?>">Twitter</a> <?php } ?>
  <?php if(get_the_author_meta('xing') != NULL) { ?><a href="<?php the_author_meta('xing'); ?>">XING</a> <?php } ?>
  </p>
</div>

style.css

.postauthorabout { font-size:0.8em; }
.postauthorabout, .postauthorlinks { font-variant:small-caps; }
.postauthorbio { margin:0 0 0.8em 0; }
.postauthorlinks { font-weight:bold; }
.postauthorlinks a { margin:0 0.4em 0 0; }

Ergebnis

So kann das Ganze dann aussehen:

Autoreninformationen Screenshot

Referenz

Vorheriger und nächster Beitrag-Link mit Artikelbild und Zufallsbild als Fallback

single.php

<div id="prev_post">
 <?php
 $prev_post = get_previous_post('true');
 if (!empty( $prev_post )): ?>
 <a href="<?php echo get_permalink( $prev_post->ID ); ?>" title="<?php $prev_post->post_title; ?>" ><?php if ( has_post_thumbnail( $prev_post->ID ) ) { echo get_the_post_thumbnail($prev_post->ID, 'homepage-thumbnail'); } else { ?>
 <img src="<?php bloginfo('template_directory'); ?>/images/artikelbild/start/<?php echo mt_rand(1, 5); ?>.jpg" alt="<?php $prev_post->post_title; ?>" /><?php } ?></a>
 <p><a href="<?php echo get_permalink( $prev_post->ID ); ?>"><?php echo $prev_post->post_title; ?></a></p>
 <?php endif; ?>
</div>

<div id="next_post">
 <?php
 $next_post = get_next_post('true');
 if (!empty( $next_post )): ?>
 <a href="<?php echo get_permalink( $next_post->ID ); ?>" title="<?php $next_post->post_title; ?>" ><?php if ( has_post_thumbnail( $next_post->ID ) ) { echo get_the_post_thumbnail($next_post->ID, 'homepage-thumbnail'); } else { ?>
 <img src="<?php bloginfo('template_directory'); ?>/images/artikelbild/start/<?php echo mt_rand(1, 5); ?>.jpg" alt="<?php $next_post->post_title; ?>" /><?php } ?></a>
 <p><a href="<?php echo get_permalink( $next_post->ID ); ?>"><?php echo $next_post->post_title; ?></a></p>
 <?php endif; ?>
</div>

style.css

#next_post { width:290px; float:right; margin:20px 20px 20px 0; }
#prev_post { width:290px; float:left; margin:20px 0 20px 20px; }

Artikelbild mit Zufalls-Bild als Fallback

  • start.php mit benutzerdefinierter Startseite auf der eine eigene Version des Artikelbilds (homepage-thumbnail) ausgegeben werden soll
  • single.php mit entsprechendem Artikelbild
  • ein Ordner /images/artikelbild/start/ im Theme-Ordner, in dem Bilder 1.jpg, 2.jpg und 3.jpg in den passenden Dimensionen des homepage-thumbnail abgelegt sind
  • ein Ordner /images/artikelbild/single/ im Theme-Ordner, in dem Bilder 1.jpg, 2.jpg und 3.jpg in den passenden Dimensionen des post-thumbnail abgelegt sind
  • hat ein Artikel kein Artikelbild, wird automatisch mittels Zufallsfunktion eines der Bilder aus den Ordnern angezeigt

functions.php

add_theme_support( 'post-thumbnails' );
set_post_thumbnail_size( 600, 200, true );
add_image_size( 'homepage-thumbnail', 290, 120, true );

start.php

<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" >
<?php if ( has_post_thumbnail() )
{ the_post_thumbnail( 'homepage-thumbnail', array('class' => 'homepage-thumbnail') ); }
else { ?>
<img src="<?php bloginfo('template_directory'); ?>/images/artikelbild/start/<?php echo mt_rand(1, 3); ?>.jpg" alt="<?php the_title(); ?>" class="homepage-thumbnail" />
<?php } ?></a>

single.php

<?php if ( has_post_thumbnail() )
{ the_post_thumbnail( 'post-thumbnail', array('class' => 'single-thumbnail') ); }
else { ?>
<img src="<?php bloginfo('template_directory'); ?>/images/artikelbild/single/<?php echo mt_rand(1, 5); ?>.jpg" alt="<?php the_title(); ?>" class="single-thumbnail" /><?php } ?>

Anpassen