|
Revision 20923, 1.5 kB
(checked in by mdawaffe, 9 months ago)
|
fix for category exclusion in front page cats
|
| Line | |
|---|
| 1 |
<?php |
|---|
| 2 |
|
|---|
| 3 |
|
|---|
| 4 |
|
|---|
| 5 |
|
|---|
| 6 |
|
|---|
| 7 |
|
|---|
| 8 |
|
|---|
| 9 |
|
|---|
| 10 |
function fpc_where($where) { |
|---|
| 11 |
|
|---|
| 12 |
// Example: $cats_to_show = '1 2 3 4'; |
|---|
| 13 |
$cats_to_show = '1'; |
|---|
| 14 |
|
|---|
| 15 |
global $wpdb, $wp_query; |
|---|
| 16 |
|
|---|
| 17 |
if (! $wp_query->is_home) { |
|---|
| 18 |
return $where; |
|---|
| 19 |
} |
|---|
| 20 |
|
|---|
| 21 |
$cat = $cats_to_show; |
|---|
| 22 |
if (stristr($cat,'-')) { |
|---|
| 23 |
|
|---|
| 24 |
// always mean 'everything /except/ this one'. We should be able to do |
|---|
| 25 |
// multiple negatives but we don't :-( |
|---|
| 26 |
$eq = '!='; |
|---|
| 27 |
$andor = 'AND'; |
|---|
| 28 |
$cat = explode('-',$cat); |
|---|
| 29 |
$cat = intval($cat[1]); |
|---|
| 30 |
} else { |
|---|
| 31 |
$eq = '='; |
|---|
| 32 |
$andor = 'OR'; |
|---|
| 33 |
} |
|---|
| 34 |
|
|---|
| 35 |
$cat_array = explode(' ', $cat); |
|---|
| 36 |
$whichcat .= ' AND (category_id '.$eq.' '.intval($cat_array[0]); |
|---|
| 37 |
$whichcat .= get_category_children($cat_array[0], ' '.$andor.' category_id '.$eq.' '); |
|---|
| 38 |
for ($i = 1; $i < (count($cat_array)); $i = $i + 1) { |
|---|
| 39 |
$whichcat .= ' '.$andor.' category_id '.$eq.' '.intval($cat_array[$i]); |
|---|
| 40 |
$whichcat .= get_category_children($cat_array[$i], ' '.$andor.' category_id '.$eq.' '); |
|---|
| 41 |
} |
|---|
| 42 |
$whichcat .= ')'; |
|---|
| 43 |
|
|---|
| 44 |
$where .= $whichcat; |
|---|
| 45 |
|
|---|
| 46 |
return $where; |
|---|
| 47 |
} |
|---|
| 48 |
|
|---|
| 49 |
function fpc_join($join) { |
|---|
| 50 |
global $wpdb, $wp_query; |
|---|
| 51 |
|
|---|
| 52 |
if (! $wp_query->is_home) { |
|---|
| 53 |
return $join; |
|---|
| 54 |
} |
|---|
| 55 |
|
|---|
| 56 |
$join .= " LEFT JOIN $wpdb->post2cat ON ($wpdb->posts.ID = $wpdb->post2cat.post_id) "; |
|---|
| 57 |
|
|---|
| 58 |
return $join; |
|---|
| 59 |
} |
|---|
| 60 |
|
|---|
| 61 |
add_filter('posts_join', 'fpc_join'); |
|---|
| 62 |
add_filter('posts_where', 'fpc_where'); |
|---|
| 63 |
|
|---|
| 64 |
?> |
|---|
| 65 |
|
|---|