最近正打算要改版当前主题,不只是外观上,还有在内容上,不过在技术上还有些小问题,每次折腾 WordPress 都会有收获,这次也是,已经解决了一些 WordPress 的问题,老规矩,写下来当笔记。
一、Wordpress 主循环外排除特定分类:
用途举例:一般 WordPress 主题的 index.php 都是输出所有分类的日志,但是对于不同的需求可以 DIY 一下,比如说你想隐藏某特定分类下的日志,让其不在首页显示,但是这又不同于私有日志,它是公开可见的。这时候就需要在 the loop 之外将此特定分类排除。
在 WordPress 默认模板中,主循环调用文章的代码格式如下:
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
//主循环内容
<?php endwhile; ?>
<?php endif; ?>
<?php while (have_posts()) : the_post(); ?>
//主循环内容
<?php endwhile; ?>
<?php endif; ?>
默认情况下,文章调用范围为所有分类。如果排除某分类,可以使用 query_posts() 函数:
<?php query_posts('cat=-1'); ?>
以上代码调用除分类 ID 为 1 外的所有文章。将其插入主循环前即可。
由于 query_posts() 函数会与分页功能造成冲突,可以将 query_posts() 语句替换为:
<?php
$limit = get_option('posts_per_page');
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('cat=-1&showposts=' . $limit=10 . '&paged=' . $paged);
?>
$limit = get_option('posts_per_page');
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('cat=-1&showposts=' . $limit=10 . '&paged=' . $paged);
?>
若需排除特定分类,又要保持分页功能正常,则完整代码如下:
<?php
$limit = get_option('posts_per_page');
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('cat=-1&showposts=' . $limit=10 . '&paged=' . $paged);
?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
//主循环内容
<?php endwhile; endif; ?>
$limit = get_option('posts_per_page');
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('cat=-1&showposts=' . $limit=10 . '&paged=' . $paged);
?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
//主循环内容
<?php endwhile; endif; ?>
以上方法转自:芒果-WordPress 主循环排除特定分类
二、Wordpress 主循环内排除特定分类:
用途举例:现在可以看到我的每篇日志中左上角都有图片广告,如果某特定分类并不适合投放广告,或者说需要根据日志分类来显示不同的广告,这时候,你就需要用到 in_category 函数,在 the loop 之内排除 WordPress 的特定日志分类。
用法如下:
<?php
if ( in_category( 'pachoderms' )) {
// They have long trunks...
} elseif ( in_category( array( 'Tropical Birds', 'small-mammals' ) )) {
// They are warm-blooded...
} else {
// & c.
}
?>
if ( in_category( 'pachoderms' )) {
// They have long trunks...
} elseif ( in_category( array( 'Tropical Birds', 'small-mammals' ) )) {
// They are warm-blooded...
} else {
// & c.
}
?>
in_category 函数的具体用法可以参见官方文件。
WordPress 真是怎么学都学不完啊,感觉我越学越白痴,离 DIY 属于自己的主题又远了一步,囧rz……
-
Wordpress 分离并调用第一篇最新日志2011年05月30日 -
万戈牌 WordPress 搜索自动匹配提示标签关键词2012年04月7日 -
新年新气象,博客换新衣2012年01月20日 -
2011 年终总结2011年12月29日
我的都改了,但分页还是不行,第二页显示所有分类列表
有点晕,
谢谢万兄,解决了我一个大问题。
Pingback: TIPS的网志 » 在 Wordpress 循环中排除某分类
恩恩,这对我很有帮助
有用就好,嘿嘿
大哥。我最近也在学习自已做模版在本地调试。
碰到问题想请教大哥您,加我QQ258481432
我想做一个跟你一样的列表
index.php里面要怎么改
才会变成一排双列的文章显示!
加下我Q谢谢
把li标签的样式设为float:left;width:50%;就可以了
我是菜鸟别介意哈。
我完全采用你的css下去改
还是不太懂,你QQ多少,我加下你吧
谢谢
Q:101149488
正在找这方面的内容呢 呵呵 收藏了 ~!
我首页的文章分类想显示两列,而且只显示某个大分类下的小分类,并且不要括号,请问这个怎么实现啊
include=id&‘show_count‘ => 0, 0,
具体可以看wp_list_categories 参数
这个代码在哪个文件里面的?
呃。。。我不知道你是怎么实现的分类,插件?还是直接加在sidebar.php中?
总之是加在相应的wp_list_categories函数的参数里
哎,我也不知道自己的程序是怎么弄的,就好像uuseexiazai.net.cn我的大分类是“软件下载”,下面会有“网络电视下载”“网络电话下载”“热门软件下载”....,我想在右侧中的“文章分类”只显示“软件下载”下的这些小分类,其他的大类,全部不显示,而且我不想显示括号和文章数。呵呵,比较挑剔吧,麻烦你了
你还是Q我吧,这样说不清楚
Q:101149488
我没太研究WP,但直觉上,处理这个应该不用循环吧。
呵呵,是我的标题误导了你,本篇强调的不是循环
我的神,又是代码,头大了。
今天还准备写一篇代码呢
会用几个基本的调用就能做一个主题了,不难的
难者不会,会者不难,你是加入WPJAM的人物,仰视啊
要么你找我们定做一个吧,哈哈
其实只要多逛逛Wordpress官方文档网站,很多功能都可以轻松实现
是的,不过如果中文的WP文档能全面一些就好了
我仿佛每次换主题后pr都会降 然后过很长时间升回来,万戈同学能帮助解决这个问题么?
如果我是google总裁,一定帮你解决此难题,可惜我不是
不过据我所知,只要不是频繁地更换主题,对PR的影响并不大,google的反应能力还是比较快的
嗯嗯学习了
喜欢diy,可惜了自己不是搞代码的~
呵呵,我也喜欢DIY,不过我也不是专业搞代码的,东拼西凑抄来的东西
看望朋友,会经常来分享你的有好文章
我偷偷这样干过!
本楼77,大家庆贺下,万戈老弟开个露天party吧
才77楼。。。离平均留言数还差100楼呢。。。等上300再开party
这可是你说的哦,哈哈。
水军听到了吗?万戈老弟在召唤。
刚想得瑟一下这次这么靠前,仔细一看,已盖75层……嗯,站在楼顶看风景不错,好辽阔!
作为一个Z-blog用户+WP白痴,我纯水一次,哈哈。
我的博客正好,很省事。
我要求首页什么都显示,无论哪个分类。
我的博客不放广告,要放就什么内容的分类一起放。
很省事
这东西好!我研究研究!
之前都是套同样的模板做静态页,这个如果搞定,就省事多了。
做静态页?要更新岂不是很麻烦~
用这个方法确实不错,但是在实际操作中还遇到些小麻烦,正在研究中。。。
好专业,看不懂,围观好了。
万戈童鞋怎么成专业搞PHP的了……
非专业,偶尔为之,呵呵
CMS主题比较合适,O(∩_∩)O哈哈~
万戈兄,首页没有我的链接,伤心啊。。
呵呵,哈哈,老弟装傻中
哈哈,大哥也装傻了。。。。
老弟=万戈,我直接这么称他的,不是说你哦
那咱白当了会小弟了。。。。。
搞不好,我还你大的···不敢称自己为大哥。
首页已加,莫哭哈
是根据日志分类来显示不同的广告,而不是让广告随机显示啊
貌似好复杂..哎先收藏下
其实只要了解一下WP的函数,这个并不算复杂的,复杂的我可不会搞
不搞就不搞,一搞就是这么高层次的
又折腾了,你收藏好,我要用时直接 CP
我也是CP过来的,哈哈
提个意见:你的每页显示的评论太少,而你的评论又多(羡慕一下),可是你却设为10个评论(楼层)一页,而且评论分页没有显示页数,对于像我这样要回来回复评论的人相当不便,不知其他人有没有这个“烦恼”,哈,建议设为20 + 评论分页页数提示
其他人当然有这个烦恼,遇到最多的人就是我啦,因为我回复的最多。。。意见很好,欣然接受,我去改20个试试。谢谢哈
想过,但是样式表还没写好,就搁置了,周末折腾一下试试
非常有用的代码,收藏到wordpress代码集了。
你咋这么强呢。。。看来这次更新不规律让大家不适应啊。。。哈哈,不过晚上去看书了,就有这么多童鞋来。。。
这末闲在家里呗,啥时更新都可以,呵呵
我们老师说了,玩代码的编程王,前台都不咋地;前台牛X的,代码都玩的不咋地;哈哈,我就属后者
我属于结合体
第二句~
http://i48.tinypic.com/2ujo754.jpg
HTML代码被屏蔽了?
你也该是时候自己弄个主题了
好好补偿我们,例如请吃饭!
真没规律 导致我来的时候飘过40位童鞋了
技术贴 收藏
呵呵,这篇是共享帖也是学习帖,写给我自己看的
貌似煎蛋就是这样办滴 嘿嘿~
煎蛋是我学习的楷模啊
query_posts($query_string.'&cat=-1');
可以解决分页无效的问题
HOHO,谢谢,收藏之
求爷爷拜奶奶也找不到一个这样专心PJ的人,WP的童鞋有福啊,万戈万岁
呵呵,因为WP确实强大,禁的起我折腾
你调用$limit变量时又给赋值$limit=10,之前的定义$limit = get_option('posts_per_page');就无效了啊。。
看的真仔细,这也被你发现了。。。。我去改
你更新不很有规律的吗?
今天怎么那么变态啊!
故意的,防止人为的沙发
你狠 ,我去淘宝买个抢沙发的软件来。
今天的更新真的没规律了
每个总有那么几天..
每个月总有那么几天..
这个文章我是一点都没看懂啊!
我也是一知半解,会用就可以了,呵呵,这就是CP党的精髓所在~
好不容易第一次这么靠前,不过不出几分钟,我的留言将消失在第一页了
呵呵,哪有这么快,我这里人气已经锐减了~
小邪一直没搞懂代码里冒号和问号的意思 = =
好像是另外一种写法,万戈兄有啥心得吗?
恩,是另一种写法,用了冒号,结尾的时候就要用endwhile或者endif相对应
只是因为代码长了,循环和判断挤在一起怕看不清楚,就用这种方法区别开来
阳台啊阳台
藤椅啊,藤椅。。。
藤椅上的人啊,藤椅上的人 。。
看不懂……
我也看不懂,但是大致的意思就是,不想让某个分类的文章在Index页面显示,但是又不属于私人文章,是公开的。。。也就是说,必须到该分类目录下,才能看见。丫脑子进水了。。
无折腾,不WP
折腾无止境
一边折腾一边学习咯,呵呵
好了,此广告位招租,价格面议。。
5分钟后,此广告位下沉至第二页
万戈兄,太恨了,评论太多,没办法,沉就沉吧。。。啥时候换主题呢?
水平有限,做不出来
时间,木有时间呐
板凳啊,板凳。。。。继续坐。
沙发啊,沙发。。。。我来了。
够神速。。。
要的就是速度,哇哈哈。
膜拜啊