共计 1551 个字符,预计需要花费 4 分钟才能阅读完成。
上一篇讲解了 ,这一篇为大家分享根据子站点分类名称来显示文章内容。将这一篇是做项目的时候遇到的一个问题。因为客户网站的yabo亚博88主页有很多版块,每个版块都是一个分类,而且每个子站点里面都有这些版块的分类。所以客户就要求希望可以根据子站点的分类将内容显示出来,当时第一个想到的方法就是使用 sql 语句进行获取,感觉是最快的,而且是每次都是随机显示 10 篇指定分类文章,下面就是具体的实现方法。
实现这一方法需要对 wordpress 数据库进行下分析了,通过分析每个站点的分类名称都在 terms 表里面,而里面的 term_id 就是每个子站点的分类 id 号,但是每个站点的分类 id 不一定都是一样的,所以需要考虑用分类名称来获取分类 id,这样我就有思路了。
首先在你使用主题的 funtions.php 里面添加下代码:
// 根据时间显示最新的分类文章内容,每个站点显示一篇内容
//$blog_id 子站点 id
//$catid 分类 id
function get_cat_blogposts_wpmu($blog_id,$catid){wp_reset_query();
switch_to_blog($blog_id);
global $post;?>
have_posts()) : $my_query2->the_post();
?>
上面的方法是用来显示子站点文章内容,里面用到了 wp_query 这个函数,如果了解这个函数的应该知道这个函数是可以直接输入分类名称来显示的。但是貌似输入中文的分类名称不管用。所以只好换了方法,获取分类 id 来显示文章了,大家感兴趣的可以研究下看看,然后分享一下。
接下来获取分类 id 号,使用方法是
global $wpdb;
$most_viewed_cat = $wpdb->get_results("select * from $wpdb->blogs");
foreach ($most_viewed_cat as $keyc => $vc)
{if($vc->blog_id !=1) // 排除主站点 id
{$id_cat[$keyc] = $vc->blog_id;
}
}
$newid = array_flip($id_cat);
$new_array_cat = array_rand($newid,10);
$n_post = array_filter($new_array_cat);
foreach ($n_post as $ksc => $volsc)
{$most_cat = $wpdb->get_results("select * from wp_".$volsc."_terms where name =' 最新博文 '");
foreach ($most_cat as $ks => $vs)
{get_cat_blogposts_wpmu($volsc,$vs->term_id); // 方法调用
}
}
这个方法我在之前的文章中也有提到过,只不过换了个方式来显示。将以上的代码放到你要显示的地方,比如要放到yabo亚博88首页,那么一般在 index.php 文件中,这个根据大家主题的不同,文件也不大相同。可能是 home.php,也有可能是 front-page.php 等等。如果不清楚怎么放的可以在下面留言。
ps:如果大家有什么好的方法的,不要吝啬哦,和大家分享一下。
正文完 发表至: 网站建设 2014-01-06