wp_maybe_decline_date( string $date, string $format = '' )
Determines if the date should be declined.
Description
If the locale specifies that month names require a genitive case in certain formats (like ‘j F Y’), the month name will be replaced with a correct form.
Parameters
- $date
-
(Required) Formatted date string.
- $format
-
(Optional) Date format to check.
Default value: ''
Return
(string) The date, declined if locale specifies it.
Source
File: wp-includes/functions.php
function wp_maybe_decline_date( $date ) {
global $wp_locale;
// i18n functions are not available in SHORTINIT mode
if ( ! function_exists( '_x' ) ) {
return $date;
}
/* translators: If months in your language require a genitive case,
* translate this to 'on'. Do not translate into your own language.
*/
if ( 'on' === _x( 'off', 'decline months names: on or off' ) ) {
// Match a format like 'j F Y' or 'j. F'
if ( @preg_match( '#^\d{1,2}\.? [^\d ]+#u', $date ) ) {
$months = $wp_locale->month;
$months_genitive = $wp_locale->month_genitive;
foreach ( $months as $key => $month ) {
$months[ $key ] = '# ' . $month . '( |$)#u';
}
foreach ( $months_genitive as $key => $month ) {
$months_genitive[ $key ] = ' ' . $month . '$1';
}
$date = preg_replace( $months, $months_genitive, $date );
}
}
// Used for locale-specific rules
$locale = get_locale();
if ( 'ca' === $locale ) {
// " de abril| de agost| de octubre..." -> " d'abril| d'agost| d'octubre..."
$date = preg_replace( '# de ([ao])#i', " d'\\1", $date );
}
return $date;
}
Changelog
Version | Description |
---|---|
5.4.0 | The $format parameter was added. |
4.4.0 | Introduced. |