Rating: 4 stars
It is a simple but effective plugin, with the possibility of achieving good results
]]>Rating: 5 stars
This plugin allows you to enter a start date and end in a post and to treat it exactly like an event.
But into the post and without use events !!! lovely widget, too!
Rating: 5 stars
Very simple and elegant solution for event management, requires some degree of coding knowledge to implement in front-end but the developer’s wiki is very clear.
]]>Rating: 4 stars
Just what I was looking for. Great if you could add “place”, but hey I can just encode that as part of start/repeat dates with the ‘alpha’ option.
I use this in function.php to have an easy shortcode for it:
// Minimalistic Event Manager
function my_mem_settings() {
mem_plugin_settings( array( 'page' ), 'alpha' );
}
add_action( 'mem_init', 'my_mem_settings' );
/**
Find Date in a String
01/01/2012 will return > 01-01-2012
30-12-11 will return > 30-12-2011
1 2 1985 will return > 01-02-1985
10.12.1850 will return > 10-12-1850
5 12 85 will return > 05-12-1985
5 October 2012 will return > 02-10-2012
MAY 5th 1985 will return > 05-05-1985
1st March 81 will return > 01-03-1981
*/
function find_date( $string ) {
//Define month name:
$month_names = array(
"january",
"february",
"march",
"april",
"may",
"june",
"july",
"august",
"september",
"october",
"november",
"december"
);
$month_names_short = array(
"jan",
"feb",
"mar",
"apr",
"may",
"jun",
"jul",
"aug",
"sep",
"oct",
"nov",
"dec"
);
$month_number=$month=$matches_year=$year=$matches_month_number=$matches_month_word=$matches_day_number="";
//Match dates: 01/01/2012 or 30-12-11 or 1 2 1985
preg_match( '/([0-9]?[0-9])[\.|\-|\/| ]([0-1]?[0-9])[\.|\-|\/| ]([0-9]{2,4})/', $string, $matches );
if ( $matches ) {
if ( $matches[1] )
$day = $matches[1];
if ( $matches[2] )
$month = $matches[2];
if ( $matches[3] )
$year = $matches[3];
}
if ( empty( $month ) ) {
$s = " ".$string." ";
$s = str_replace(array('.', ',', ';'), " ", $s);
//Match month name:
preg_match( '/(' . implode( '|', $month_names ) . ')/i', $s, $matches_month_word );
if ( $matches_month_word ) {
if ( $matches_month_word[1] )
$month = array_search( strtolower( $matches_month_word[1] ), $month_names ) + 1;
}
//Match short month name:
preg_match( '/(' . implode( '|', $month_names_short ) . ')/i', $s, $matches_month_word );
if ( $matches_month_word ) {
if ( $matches_month_word[1] )
$month = array_search( strtolower( $matches_month_word[1] ), $month_names_short ) + 1;
}
}
//Match 5th 1st 7, day:
preg_match( '/([0-9]?[0-9])(st|nd|th|,)/', $string, $matches_day );
if ( $matches_day ) {
if ( $matches_day[1] )
$day = $matches_day[1];
}
//Match Year if not already setted:
if ( empty( $year ) ) {
preg_match( '/[0-9]{4}/', $string, $matches_year );
if ( $matches_year[0] )
$year = $matches_year[0];
}
if ( ! empty ( $day ) && ! empty ( $month ) && empty( $year ) ) {
preg_match( '/[0-9]{2}/', $string, $matches_year );
if ( $matches_year[0] )
$year = $matches_year[0];
}
//Check year:
if ( 2 == strlen( $year ) && $year > 20 )
$year = '19' . $year;
else if ( 2 == strlen( $year ) && $year < 20 )
$year = '20' . $year;
$date = array(
'year' => $year,
'month' => $month,
'day' => $day
);
//Return today if nothing is found
if ( empty( $year ) || empty( $month ) || empty( $day ) )
return time();
else
return mktime(0, 0, 0, $month, $day, $year);
}
function sort_dates(&$dates) {
if (!is_array($dates)) return false;
foreach ($dates as &$val) {
$sortkey = date('Y.m.d', find_date($val));
$val = $sortkey.' '.$val;
}
sort($dates);
$left = strlen($sortkey)+1;
foreach ($dates as &$val) {
$val = substr($val, $left);
}
return $true;
}
/*
Add this handy shortcode
[mem-this-dates] = List dates for this post (start + all repeats)
[mem-this-dates seperator=" & "] = same, but put & between (default = <br/>)
[mem-this-dates id=117 seperator=" & "] = same, but for post ID number 117
[mem-this-dates max=3] = List max 3 dates
*/
function mem_list_dates_function($atts, $content = null) {
extract(shortcode_atts(array(
'seperator' => '<br/>',
'id' => -1,
'max' => 99
), $atts));
if ($id < 0) $id = get_the_ID();
$mem_start_date = get_post_meta($id, '_mem_start_date', true);
if ($mem_start_date == "" ) {
$s = "Please ask us ";
} else {
$mem_repeat_date = get_post_meta($id, '_mem_repeat_date', false);
$mem_repeat_date[] = $mem_start_date;
sort_dates($mem_repeat_date);
$s = "";
foreach ($mem_repeat_date as $val) {
if ($max > 0) {
if ($s) $s .= $seperator;
$s .= $val;
$max -= 1;
}
}
}
return $s;
}
add_shortcode('mem-list-dates', 'mem_list_dates_function');
]]>