wordpress相关文章函数
在yo2上建blog有点不好的地方,就是不提供自主安装插件功能,这不想要装个显示相关文章的插件,发现没权限装,所以目前要做的就是把相关文章功能去插件化。
还好可以自主修改主题文件,仔细研究了下inove的代码,发现 NeoEase已经在single.php里面加入相关函数的调用。
<?php
if(function_exists(‘wp23_related_posts’)) {
echo ‘<div id=”related_posts”>’;
wp23_related_posts();
echo ‘</div>’;
echo ‘<div class=”fixed”></div>’;
}
?>
查了一下,其中wp23_related_posts()函数是一个wordpress-23-related-posts-plugin的插件提供,也就是说这要直接安装这个插件就可以使用显示相关文章的功能。
既然yo2不提供插件安装功能,那我就把插件装到主题上去,还好wordpress-23-related-posts的代码很简单,只有一个php文件,稍微看了下后,剥离了wp23_related_posts()函数,舍去相关设置UI和附属功能,把wp23_related_posts()函数添加到inove的主题支持函数文件(functions.php)上。
测试OK,下面附上function wp23_related_posts()函数,感觉不够精简,有空再看优化下。
update:其实yo2已经安装好的插件simple tag里面有显示相关文章的功能。
再次update:这次真的猪了,发现yo2自带了WP 2.3 Related Posts 0.51插件,忘了启用而已。
function wp23_related_posts(){$output = wp_get_related_posts() ;echo $output;
}
function wp_get_related_posts() {
global $themedb, $post,$table_prefix;
$wp_rp = get_option(“wp_rp”);$exclude = explode(“,”,$wp_rp["wp_rp_exclude"]);
$limit = $wp_rp["wp_rp_limit"];
$wp_rp_title = $wp_rp["wp_rp_title"];
$wp_no_rp = $wp_rp["wp_no_rp"];
$wp_no_rp_text = $wp_rp["wp_no_rp_text"];
$show_date = $wp_rp["wp_rp_date"];
$show_comments_count = $wp_rp["wp_rp_comments"];
if ( $exclude != ” ) {
$q = “SELECT tt.term_id FROM “. $table_prefix .”term_taxonomy tt, ” . $table_prefix . “term_relationships tr WHERE tt.taxonomy = ‘category’ AND tt.term_taxonomy_id = tr.term_taxonomy_id AND tr.object_id = $post->ID”;$cats = $themedb->get_results($q); foreach(($cats) as $cat) {
if (in_array($cat->term_id, $exclude) != false){
return;
}
}
}if(!$post->ID){return;}
$now = current_time(‘mysql’, 1);
$tags = wp_get_post_tags($post->ID);//print_r($tags);
$taglist = “‘” . $tags[0]->term_id. “‘”;
$tagcount = count($tags);
if ($tagcount > 1) {
for ($i = 1; $i <= $tagcount; $i++) {
$taglist = $taglist . “, ‘” . $tags[$i]->term_id . “‘”;
}
}if ($limit) {
$limitclause = “LIMIT $limit”;
} else {
$limitclause = “LIMIT 5″;
}$q = “SELECT p.ID, p.post_title, p.post_date, p.comment_count, count(t_r.object_id) as cnt FROM $themedb->term_taxonomy t_t, $themedb->term_relationships t_r, $themedb->posts p WHERE t_t.taxonomy =’post_tag’ AND t_t.term_taxonomy_id = t_r.term_taxonomy_id AND t_r.object_id = p.ID AND (t_t.term_id IN ($taglist)) AND p.ID != $post->ID AND p.post_status = ‘publish’ AND p.post_date_gmt < ‘$now’ GROUP BY t_r.object_id ORDER BY cnt DESC, p.post_date_gmt DESC $limitclause;”;
//echo $q;
$related_posts = $themedb->get_results($q);
$output = “”;if (!$related_posts){
if(!$wp_no_rp || ($wp_no_rp == “popularity” && !function_exists(‘akpc_most_popular’))) $wp_no_rp = “text”;
if($wp_no_rp == “text”){
if(!$wp_no_rp_text) $wp_no_rp_text= __(“No Related Post”,’wp_related_posts’);
$output .= ‘<li>’.$wp_no_rp_text .’</li>’;
} else{
if($wp_no_rp == “random”){
if(!$wp_no_rp_text) $wp_no_rp_text= __(“Random Posts”,’wp_related_posts’);
$related_posts = wp_get_random_posts($limitclause);
} elseif($wp_no_rp == “commented”){
if(!$wp_no_rp_text) $wp_no_rp_text= __(“Most Commented Posts”,’wp_related_posts’);
$related_posts = wp_get_most_commented_posts($limitclause);
} elseif($wp_no_rp == “popularity”){
if(!$wp_no_rp_text) $wp_no_rp_text= __(“Most Popular Posts”,’wp_related_posts’);
$related_posts = wp_get_most_popular_posts($limitclause);
}else{
return __(“Something wrong”,’wp_related_posts’);;
}
$wp_rp_title = $wp_no_rp_text;
}
}foreach ($related_posts as $related_post ){
$output .= ‘<li>’;if ($show_date){
$dateformat = get_option(‘date_format’);
$output .= mysql2date($dateformat, $related_post->post_date) . ” — “;
}$output .= ‘<a href=”‘.get_permalink($related_post->ID).’” title=”‘.wptexturize($related_post->post_title).’”>’.wptexturize($related_post->post_title).”;
if ($show_comments_count){
$output .= ” (” . $related_post->comment_count . “)”;
}$output .= ‘</a></li>’;
}$output = ‘<ul class=”related_post”>’ . $output . ‘</ul>’;
if($wp_rp_title != ”) $output = ‘<h3>’.$wp_rp_title .’</h3>’. $output;
return $output;
}
//elated_posts_end







:D 学习了。。