WordPress Core Funktion existiert im WordPress Theme

Nach dem Update von WordPress 4.2 fanden wir den Fall vor, dass eine Funktion im WordPress Code neu hinzukam, die auch im verwendeten Theme schon definiert war.

Fatal error: Cannot redeclare get_avatar_url() (previously declared in /home/blog/wordpress/wp-includes/link-template.php:3414) in /home/blog/wordpress/wp-content/themes/…/functions.php on line 123

Um diese Problem auszuschließen, bietet sich bei neuen Funktionen im Theme die Prüfung an, ob diese bereits existiert.

Der folgende Code-Schnippsel zeigt dies exemplarisch.

if ( ! function_exists( 'my_new_awesome_function' ) ) {
/**
 * My new function is awesome
 *
 * @param array $args
 * @return array
 */
function my_new awesome_function( $args ) {
  // function stuff
  return array();
  }
}

Wie würdet ihr dieses Problem lösen?

WPML: WordPress Datumsformat übersetzbar machen

Mit folgendem Snippet lässt sich das Standard-Datumsformat von WordPress mit WPML übersetzbar machen.

function translate_date_format($format) {
  if (function_exists('icl_translate'))
    $format = icl_translate('Formats', $format, $format);
  return $format;
}
add_filter('option_date_format', 'translate_date_format');

Anzahl der Listenpunkte im Archiv-Widget begrenzen

Die Anzahl der Listenpunkte im Archiv-Widget ist in WordPress standardmäßig unbegrenzt, was bei einer großen Anzahl an Beiträgen in den vergangenen Monaten sehr lang werden könnte, sollte der Blog vor Jahren gestartet und regelmäßig gefüllt worden sein.

function limit_widget_archives( $args ) {
  $args['limit'] = 12;
  return $args;
}
add_filter( 'widget_archives_args', 'limit_widget_archives' );
add_filter( 'widget_archives_dropdown_args', 'limit_widget_archives' );

Um diese Monatsausgabe der Liste etwas zu begrenzen, hilft folgendes Snippet, welches leicht in der functions.php des jeweiligen Themes eingebunden werden kann. Der entsprechende Wert (z.b. 12) kann in Zeile 2 des Code-Snippets festgelegt werden.