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

Kontaktangaben im Impressum für alle Websites zentral verwalten

Als mu-plugin realisiert wird das Impressum zentral für alle Websites einer Multisite-Umgebung nutzbar. Der Shortcode impressum integriert das Impressum. Mit der Variable impressum email=“name@tld.de“ kann die E-Mail-Adresse angepasst werden. Sinnvoll ist diese Lösung insbesondere dann, wenn über die Websites hinweg die gleichen Kontakdaten gelten. Sie kann z.B. um dann ebenfalls zentral verwaltete Datenschutzhinweise erweitert werden.

function shortcode_imprint($atts, $content = null) {
 // Die hier angegebene E-Mail-Adresse wird angezeigt, wenn die Variable email bei Eingabe des Shortcodes nicht gesetzt wird.
 extract(shortcode_atts(array( 'email' => '2013@wpdoc.de' ), $atts));
 $return = '<p>Max Mustermann<br />
 Musterstra&szlig;e 5<br />
 43524 Musterhausen<br />
 Telefon 4531 4564761<br />
 E-Mail ' . $email . '</p>';
 return $return;
 }
add_shortcode('impressum', 'shortcode_imprint');

Zentrale Funktionen für Sicherheit und Nutzerfreundlichkeit im WPMU-Netzwerk

Zentrale Datei mit Funktionen, die im kompletten MU-Netzwerk ausgeführt werden.

/wp-content/mu-plugins/general-security-usability.php

<?php
/*
Plugin Name: General Security &amp; Usability
Plugin URI: https://wpdoc.de/?p=81
Description: Grundlegende Einstellungen hinsichtlich Sicherheit, Nutzerfreundlichkeit und Datenschutz.
Author: Johannes Ries
Author URI: http://johannesries.de
Version: 2.1
*/

// NOBLOGREDIRECT Workaround
remove_action( 'template_redirect', 'maybe_redirect_404' );

// Kommentare ohne IP-Adresse und Cookies speichern
add_filter( 'pre_comment_user_ip', '' );
  remove_action( 'set_comment_cookies', 'wp_set_comment_cookies' );// Login-Fehlermeldung bearbeiten
  function failed_login() {
  return 'Die eingegebenen Daten sind fehlerhaft. ';
}
add_filter('login_errors', 'failed_login');

// Dashboard umbennen in Übersicht
add_filter(
'gettext', 'change_names' );
add_filter( 'ngettext', 'change_names' );
function change_names( $translated ) { $translated = str_ireplace(
'Dashboard', '&amp;Uuml;bersicht', $translated );
return $translated;}

// Bilder grundsätzlich mit Datei (nicht Anhangseite) verlinken
update_option('image_default_link_type','file');

// Leere Absätze entfernen
add_filter('the_content', 'remove_empty_p', 20, 1);
function remove_empty_p($content) {
  $content = force_balance_tags($content);
  return preg_replace('#<p>(s|&nbsp;)*+(<brs*/*>)?(s|&nbsp;)*</p>#', '', $content);
}

// Änderungsmöglichkeit für das Farbschema des Administrationsbereich entfernen
function admin_color_scheme() {
  global $_wp_admin_css_colors;
  $_wp_admin_css_colors = 0;
}
add_action('admin_head', 'admin_color_scheme');

// Aktualisierungshinweis nur für Admins in Singlesite-Umgebung bzw. nur für Superadmins in Multisite-Umgebung
add_action(
'plugins_loaded',
function () {
  if (( is_multisite() &amp;&amp; !current_user_can('manage_network') ) || ( !is_multisite() &amp;&amp; !current_user_can('create_users'))) {
  add_action( 'init', create_function( '$a', &quot;remove_action( 'init', 'wp_version_check' );&quot; ), 2 );
  add_filter( 'pre_option_update_core', create_function( '$a', &quot;return null;&quot; ) );
  add_filter( 'pre_site_transient_update_core', create_function( '$a', &quot;return null;&quot; ) );
}
}
);
?>