WordPress 多站点建站教程(八): 根据子站点分类显示文章内容

四月 16
磊子 2012年 9 条评论

上一篇讲解了获取子站点用户信息,这一篇为大家分享根据子站点分类名称来显示文章内容。将这一篇是磊子做项目的时候遇到的一个问题。因为客户网站的主页有很多版块,每个版块都是一个分类,而且每个子站点里面都有这些版块的分类。所以客户就要求希望可以根据子站点的分类将内容显示出来,当时第一个想到的方法就是使用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;?>
<?php
 $my_query2 = new WP_Query('showposts=1&order=desc&orderby=date&cat='.$catid);
 while ($my_query2->have_posts()) : $my_query2->the_post();
?>
 <li class="post_link"><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a> </li>
   <?php endwhile; ?>
   <?php restore_current_blog();

}

上面的方法是用来显示子站点文章内容,里面用到了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); //方法调用
     }
 }

这个方法我在之前的文章中也有提到过,只不过换了个方式来显示。将以上的代码放到你要显示的地方,比如要放到首页,那么一般在index.php文件中,这个根据大家主题的不同,文件也不大相同。可能是home.php,也有可能是front-page.php等等。如果不清楚怎么放的可以在下面留言。

PS:如果大家有什么好的方法的,不要吝啬哦,和大家分享一下。

 

» 版权所有©转载必须以链接形式注明作者和原始出处:磊子的博客 » WordPress 多站点建站教程(八): 根据子站点分类显示文章内容
» 地址:( Ctrl+C 复制 )
» 如果对本站感兴趣,请到网站右下方订阅本站,将为你带来更多精彩和实用的文章
» 如果您对这篇文章感兴趣,不妨小小的 捐助(Donate)一下博主吧,不管多少都是对博主最大的支持和鼓励哟,博主-磊子感谢大家的支持!!!

9 条留言 其中:访客:6 条, 博主:3 条

  1. 邦林说:

    貌似用不了 两种方法我都测试了 都有错误 :?:

  2. lovetutu说:

    怎么把多个域名解析那

  3. Cain说:

    = = 放过去了 没反应……请问那串function 是放在子站点用的主题中,还是主站点?

    • 磊子说:

      这个是放在主站点上面的。至于你下面提到500错误,这个这个也可能是代码放错造成的,你在测试下看看,如果还有问题可以找我。

      • cain说:

        我测试了 还是不行, 不过如果不用下面那个代码 而直接在主题中引用上面一段代码 到是可以用….函数只要一放进Funtion.php 就会500, 而且 必须把数据和文件全部还原了 才能恢复,真心可怕。

  4. 张帅说:

    文章很好 我新手 我用楼主的array_flip array_rand 没反应
    换了array_slice 就有反应了 希望有问题可以请教您! :razz:

    • 磊子说:

      呵呵! 好的!

    • cain说:

      磊子最近貌似不在,请问楼主 你知道上面的这个教程 怎么用吗?我只要把上面的函数放到主题的functiion中,子站点就会出现500错误,不知道是什么情况。

说点什么吧




wireless earbuds moscow mule mugs bluetooth speakers waterproof camera best wireless earbuds best vacuum cleaner best drugstore foundation best dishwasher best waist trainer wireless headphones best vacuum 0594918 best bluetooth earbuds waterproof bluetooth speaker tattoo cover up action camera
订阅本站