109
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1 |
<?php |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
2 |
/* |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
3 |
Plugin Name: Related Posts by Category |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
4 |
Plugin URI: http://playground.ebiene.de/400/related-posts-by-category-the-wordpress-plugin-for-similar-posts/ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
5 |
Description: The WordPress Plugin for similar posts grouped by category. It's small. It's fast. Really. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
6 |
Author: Sergej Müller |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
7 |
Version: 0.4 |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
8 |
Author URI: http://www.wpseo.org |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
9 |
*/ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
10 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
11 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
12 |
function related_posts_by_category($params, $post_id = 0) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
13 |
$entries = array(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
14 |
$output = ''; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
15 |
$limit = 0; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
16 |
$type = ''; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
17 |
$order = ''; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
18 |
$orderby = ''; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
19 |
$post_id = intval($post_id); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
20 |
if (!$post_id) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
21 |
$post_id = $GLOBALS['post']->ID; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
22 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
23 |
if (isset($params['limit'])) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
24 |
$limit = intval($params['limit']); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
25 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
26 |
if (isset($params['type']) && !empty($params['type'])) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
27 |
$type = ($params['type'] == 'page' ? 'page' : 'post'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
28 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
29 |
if (isset($params['order']) && !empty($params['order'])) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
30 |
$order = (strtoupper($params['order']) == 'DESC' ? 'DESC' : 'ASC'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
31 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
32 |
if (isset($params['orderby']) && !empty($params['orderby']) && preg_match('/^[a-zA-Z_]+$/', $params['orderby'])) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
33 |
$orderby = $params['orderby']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
34 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
35 |
$entries = $GLOBALS['wpdb']->get_results( |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
36 |
sprintf( |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
37 |
"SELECT DISTINCT object_id, post_title FROM {$GLOBALS['wpdb']->term_relationships} r, {$GLOBALS['wpdb']->term_taxonomy} t, {$GLOBALS['wpdb']->posts} p WHERE t.term_id IN (SELECT t.term_id FROM {$GLOBALS['wpdb']->term_relationships} r, {$GLOBALS['wpdb']->term_taxonomy} t WHERE r.term_taxonomy_id = t.term_taxonomy_id AND t.taxonomy = 'category' AND r.object_id = $post_id) AND r.term_taxonomy_id = t.term_taxonomy_id AND p.post_status = 'publish' AND p.ID = r.object_id AND object_id <> $post_id %s %s %s", |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
38 |
($type ? ("AND p.post_type = '" .$type. "'") : ''), |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
39 |
($orderby ? ('ORDER BY ' .(strtoupper($params['orderby']) == 'RAND' ? 'RAND()' : $orderby. ' ' .$order)) : ''), |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
40 |
($limit ? ('LIMIT ' .$limit) : '') |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
41 |
), |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
42 |
OBJECT |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
43 |
); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
44 |
if ($entries) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
45 |
foreach ($entries as $entry) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
46 |
$output .= sprintf( |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
47 |
'%s<a href="%s" %s title="%s">%s%s%s</a>%s', |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
48 |
isset($params['before']) ? $params['before'] : '', |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
49 |
get_permalink($entry->object_id), |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
50 |
(isset($params['rel']) ? ('rel="' .$params['rel']. '"') : ''), |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
51 |
str_replace('"', '"', $entry->post_title), |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
52 |
isset($params['inside']) ? $params['inside'] : '', |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
53 |
$entry->post_title, |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
54 |
isset($params['outside']) ? $params['outside'] : '', |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
55 |
isset($params['after']) ? $params['after'] : '' |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
56 |
); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
57 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
58 |
} else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
59 |
$output = $params['message']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
60 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
61 |
if (isset($params['echo']) === true && $params['echo']) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
62 |
echo $output; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
63 |
} else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
64 |
return $output; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
65 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
66 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
67 |
?> |