Using multiple categories in EventCalendar3 for WordPress (update 1)

wp-includes/classes.php line 679-702, for the Events listed outside of the Event category

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if (mysql2date('U', $this->posts[0]->post_date_gmt) > mysql2date('U', $now)) { //it's future dated
	$this->is_preview = true;
 
	/* DIRTY FUTURE-POSTS HACK FOR EC3 */
    if (function_exists('ec3_get_calendar')) {
        global $ec3;
        $ec3_post_0_is_event = intval($wpdb->get_var(
            "SELECT COUNT(0) FROM $wpdb->post2cat WHERE post_id="
            .$this->posts[0]->ID." AND category_id IN ('$ec3->event_category','14')"));
 
        if ($ec3_post_0_is_event) {
            $this->is_preview = false;
        }
    }
    if ($this->is_preview)
    /* DIRTY FUTURE-POSTS HACK FOR EC3 */
	if (!current_user_can('edit_post', $this->posts[0]->ID)) {
		$this->posts = array ( );
	}
}

eventcalendar3.php line 1048

1
2
3
$post_list=$wpdb->get_results(
  "SELECT DISTINCT(post_id) FROM $tablepost2cat " .
  "WHERE category_id IN ('$ec3->event_category','14')" );

Using multiple categories in EventCalendar3 for WordPress

So I read at a few points that EventCalendar 3.1 was on its way, but I decided to start mangling some code to get multiple event categories to work!

Open eventcalendar3.php near line 525;

1
2
3
4
5
6
// Which posts are we interested in?
if($ec3->show_only_events)
{
// Category ID number for event posts.
$where_post = "category_id IN ('$ec3->event_category','14')";
}

I changed $where_post to add another category, this category will show up in the calendar now!

Also update line 540 to incorperate the same code so the date will be colored!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$calendar_entries = $wpdb->get_results(
"SELECT DISTINCT
post_title,
post_date,
DAYOFMONTH(post_date) AS day,
MONTH(post_date) AS month,
YEAR(post_date) AS year,
(category_id IN ('$ec3->event_category','14')) AS is_event
FROM $tableposts,$tablepost2cat
WHERE post_date >= '$begin_date'
AND post_date <  '$end_date'
AND post_status = 'publish'
AND id = post_id
AND $where_post
ORDER BY post_date ASC"
);

Each of my Event categories I want to add will be entirely seperate categories, no sub-categories, I did this so I could exclude some categories from showing up where I did not want them.

To add each category to show up like the events open eventcalendar3.php again near line 1032;

1
2
3
$ec3->is_listing =
(preg_match("/\bcategory_id\s*=\s*'?($ec3->event_category|3|4|14|8|9)'?\b/",$where) ||
preg_match("/\bcategory_nicename\s*=\s*'$event_cat_nicename'/",$where));

I changed preg_match(“/\bcategory_id\s*=\s*’?$ec3->event_category’?\b/”,$where) || to add the extra categories.

Each category I want to show up in the calendar view I make sure that they are part of the Event category as well as their own.

You can see this in effect at www.austinpublic.com

Future post searching for WordPress

I am setting up a new WordPress blog, 2.0.3, for another site. This site is using EventCalendar 3.0 and will have future scheduled posts that represent events. However WordPress doesn’t have this option built in from what I can see and a quick search yielded no results.

I did a few searches and finally opened up classes.php, goto ~590 to find this:

1
2
3
4
if ($pagenow != 'post.php' && $pagenow != 'edit.php' && !($this->is_single && $user_ID)) {
$where .= " AND post_date_gmt <= '$now'";
$distinct = 'DISTINCT';
}

Replace it with this code.

1
2
3
4
5
6
if ($pagenow != 'post.php' && $pagenow != 'edit.php' && !($this->is_single && $user_ID)) {
if (empty($q['s'])){
$where .= " AND post_date_gmt <= '$now'";
}
$distinct = 'DISTINCT';
}

Bingo! Now on your search pages future posts are displayed!

You can see this in effect at www.austinpublic.com