wordpress 文章置顶建的站,如何让某一个分类的文章一直在首页置顶,不会被最新的文章挤下去

WordPress博客首页如何排除指定分类的文章 - A5站长网
当前位置: >>
WordPress博客首页如何排除指定分类的文章
13:50&&来源:&
  今天看到有WordPress博主在问&WordPress博客首页如何排除指定分类的文章?&。用户为什么想这样做的原因有很多,也许你不希望在首页上显示上显示自己生活类的文章,而只显示一些新闻类的文章。
&&&&&& 要做到这一点,你就需要在 The loop 中更改调用文章的函数。WordPress默认主题 Twenty Ten 和 Twenty Eleven 使用 the_post() 函数来调用所有的博客文章。
  &?php while ( have_posts() ) : the_post(); ?&
  the_post() 函数使用 WP_Query。我们可以使用 WP_Query 函数本身来自定义哪些文章被调用,或者哪些存档、分类、时间的文章可以显示在主页。
  另外,我们还可以使用 query_posts 函数来控制 The Loop 循环。这种方法无疑是最好的,因为它并没有改变你的循环。不过,两种方法我都会讲解,你可以选择一个适合你的。
  使用函数WP_Query
  如果你想改变你的主页显示效果,你需要编辑你的主题index.php文件。大部分主题使用archive.php文件来作为分类(category)、时间(date)、标签(tag)的的显示页面, 所以你想更改某个存档页面只要修改archive.php文件就可以了。还有一些主题有专门的category.php、date.php、tag.php模板,修改相对应的就好。
  大多数主题文件的循环会以&Start the Loop&开始。例如在Twenty Eleven主题中,看起来像这样:
  &?php /* Start the Loop */ ?&
&&&&&&& &?php while ( have_posts() ) : the_post(); ?&
  你需要替换为以下函数:
// The Query
$query = new WP_Query( $args );
// The Loop
while ( $query-&have_posts() ) : $query-&the_post();
&&&&&& 要控制哪些文章在循环中显示,你需要定义在WP_Query中的参数,即修改
&&&&&&& $query = new WP_Query( $args );.
  目前有5种参数,比较常用的是参数是 cat 和 category_name 。
  若你要显示你的 tech 分类,而它的分类ID是1,那么你可以使用参数cat:
  $query = new WP_Query( 'cat=1' );
  或者你可以使用参数 category_name 来达到同样的效果:
  $query = new WP_Query( 'category_name=tech' );
  若想多添加几个分类,则需要用逗号分隔。
  $query = new WP_Query( 'cat=1,7,121' );
  $query = new WP_Query( 'category_name=news,reviews,tutorials' );
  在分类ID前加上减号来排除某一类的所有文章。注意,不可以使用category_name 参数来排除类别。
  $query = new WP_Query( 'cat=-1' );
  在上面说过,有5种参数,我已经讲解了其中两个:cat 和 category_name,都是从你的文章列表中包含或排除某些类别。
  其他三个参数是 category_and、category_in和category_not_in。
  category_and显示多个分类的文章:
  $query = new WP_Query( array( 'category__and' =& array( 1, 7 ) ) );
  category_in是一个or函数:
  $query = new WP_Query( array( 'category__in' =& array( 7, 127 ) ) );
  排除多个类别:
  $query = new WP_Query( array( 'category__not_in' =& array( 2, 6 ) ) );
  WP Query是一个非常灵活的功能函数。分类只是其中的一个参数而已,还可以使用:
  Author Parameters & 显示某个作者或多个作者的文章列表,也可以排除之。
  Tag Parameters & 显示或排除某些Tag的文章列表。
  Taxonomy Parameters & 显示一个或多个自定义分类的文章列表。.
  Post & Page Parameters & 使用IDs 或 page slugs显示某些特定的文章。
  Type & Status Parameters & 显示某些文章类型的文章或带有附件的文章。
  Pagination Parameters & 确定每页显示的文章数量。
  Offset Parameter & 文章从某哪开始显示。
  Order & Orderby Parameters & 更改文章列表的排列顺序。
  Sticky Post Parameters & 显示包括或排除置顶文章的文章列表。
  Time Parameters & 显示某些时间段的文章。
  Custom Field Parameters & 显示相关自定义字段的文章。
  Permission Parameters & 显示发布的或私密的文章。
  WP_Query 页面为每个参数都提供了例子,这里就不一一讲解具体用法了。
  使用函数query_posts
  query_posts可以非常简单的定制你在页面上显示的文章,而且你不必更改现有的循环代码。
  query_posts( $args );
  要使用它的功能,你就必须在你的loop循环开始之前调用它。例如:
// The Query
query_posts( $args );
// The Loop
while ( have_posts() ) : the_post();
  如果你计划调用页面中的第二个循环,请确保你使用了wp_reset_query()来重置你的循环。例如:
// The Query
&?php query_posts( $args ); ?&
&&?php /* Start the Loop */ ?&
&& &?php while ( have_posts() ) : the_post(); ?&
&&& &?php get_template_part( 'content', get_post_format() ); ?&
&?php wp_reset_query(); ?& 
  要显示某些分类的文章,你需要用到 cat 参数:
&&&&&&& &?php query_posts( 'cat=1,5,6' );& ?&
  同样,要排除某些分类,你需要在前面添加减号:  
&&&&&&& &?php query_posts( 'cat=-3,-5' );& ?&
  还可以用来显示特定的文章:
  query_posts( 'p=2' );
  要定义每页显示文章的数量,你可以使用 posts_per_page 参数:
  query_posts( 'posts_per_page=5' );
  想要了解更多的信息,请访问query_posts页面。
  使用插件来排除某些分类的文章
  对于那些对代码不太感冒的朋友,也可以使用WordPress插件。这里建议使用Simply Exclude和Ultimate Category Excluder。
  Simply Exclude
  Simply Exclude可以让你在首页、归档页、搜索页、RSS中排除或包含某些分类、作者、标签的文章,使用起来也非常简单。
  Ultimate Category Excluder
  Ultimate Category Excluder,能让你容易的排除某些分类在主页、存档页和RSS中。不同于Simply Exclude的是他只能排除某些分类,不能排除作者、标签等。
  虽然Simply Exclude和Ultimate Category Excluder插件都很不错,但如果你有一定的编程基础,那么你还是手动修改吧。
&&&&&&& 原文链接:/2012/01/wordpress-exclude-categories/
责任编辑:扬扬
延伸阅读:关键词:
站长杂谈 草根站长信息中心您的位置: >
WordPress实现文章按最新评论时间排序
WordPress实现文章按最新评论时间排序
的首页、分类页、标签页等存档页,默认是按照发布时间对文章进行排序的,现在想按最新评论时间排序,其实这个功能就是类似论坛的帖子列表效果,新发布的帖子置顶,有新评论的帖子也同样置顶,这样做的好处是可以增加互动,增加帖子评论数。在WordPress下也是可以实现这样的功能:
新发布(新更改)的文章排在顶部
有新评论的文章立即排到顶部
所有文章按照其最新一条评论的时间排序
实现的方法是给每篇文章添加一个自定义字段commentTime,这个字段的值为最新一条评论的时间,然后使用query_posts函数实现所有文章按照自定义字段commentTime的值进行排序。实现原理就这么简单,下面讲讲具体的实现方法:
一、给所有文章添加自定义字段commentTime
给每篇文章添加这个自定义字段的目的是为了方便对文章进行排序。可能叫你手动一篇一篇文章地添加自定义字段,尤其是你有几百上千篇文章的情况下,一定会是你抓狂。不过请你放心,我不会让你用这么做,这里我写了个PHP脚本,可以帮你自动给所有文章添加字段commentTime。使用方法:下载以下文件,然后上传到跟wp-config.php相同的目录(就是WordPress的安装目录)下,然后在浏览器中运行这个文件,如 http://example/meta-sql.php
下载地址:
二、添加相应action代码
这一步添加的代码可以实现发布新文章(或新更改)、有新评论的时候,自动添加/更新自定义字段commentTime的值,不需要你手动干预。在你当前使用主题的functions.php中添加以下php代码:
Copy to Clipboard引用的内容:[]
function comment_meta_add($post_ID) { // 发布新文章或修改文章,更新/添加commentTime字段值 global $ if(!wp_is_post_revision($post_ID)) { if( !update_post_meta($post_ID, 'commentTime', time()) ) { add_post_meta($post_ID, 'commentTime', time()); } } } function comment_meta_update($comment_ID) { // 发布新评论更新commentTime字段值 $comment = get_comment($comment_ID); $my_post_id = $comment-&comment_post_ID; update_post_meta($my_post_id, 'commentTime', time()); } function comment_meta_delete($post_ID) { // 删除文章同时删除commentTime字段 global $ if(!wp_is_post_revision($post_ID)) { delete_post_meta($post_ID, 'commentTime'); } } add_action('save_post', 'comment_meta_add'); add_action('delete_post', 'comment_meta_delete'); add_action('comment_post', 'comment_meta_update');
三、query_posts更改文章排序
如果你只想实现首页的文章按最新评论时间排序,那么此步只修改主题目录下的index.php即可,如果还想修改其他存档页面如分类页、标签页等,那就修改相应的模板文件,如archive.php。
举例说明,在index.php中查找代码 if (have_posts()) 或 while (have_posts()),在上一行添加query_posts函数即可:
Copy to Clipboard引用的内容:[]
if(!$wp_query) global $wp_ $args = array( 'meta_key' =& 'commentTime', 'orderby' =& meta_value, 'order' =& DESC ); $args = array_merge( $args, $wp_query-&query ); query_posts($args);
对archive.php的修改也一样!如果对query_posts的用法不熟悉,可以看这篇文章: 。
数据库清理脚本
如果某一天你不想使用这个功能了,你可以下载以下文件帮助你自动清理数据库中的无用信息,放到WordPress的安装目录下,然后在浏览器中执行一下就可以了,如http://example/meta-clear-sql.php
下载地址:
好了,全部教程到此就结束了,完成以上步骤后就什么都不用管了,文章就是按照最新评论时间进行排序了。
上一篇: 下一篇:相关的文章
你的位置:
wordpress置顶文章添加和调用
Wordpress教程wordpress如何让一篇文章置顶并显示内容?
wordpress如何让一篇文章置顶并显示内容?
不区分大小写匿名
WordPress有自带的置顶工具啊,在发布文章的时候,在侧边栏中有如下三项,&
&Announcement &Sticky &Normal
你勾选,&Sticky 或者&Announcement 就可以了,或者你也可以使用插件来实现
&
参考:
如果你的文本输入用的是quicktags,而不是富文本编辑器,也就是输入框上面是一行文字标签,其中有一个more的标签,插在文章的合适位置,那么more标签前面的内容就会作为摘要显示在首页。
在你的已发表文章列表里,对要进行置顶的文章进行快捷编辑,那里有个置顶选项。
不明白请看
操作很简单·文章发布后点击“快速编辑”你会看到“置顶”字样·打勾确定就好,··这个功能是wp自带的··要是还有问题可以到八亿空间来问我,我是玩wordpress的
等待您来回答
互联网领域专家WordPress高亮作者和文章置顶的实现
主题又折腾了一下,看起来舒服一点了。在折腾的途中,发现几个有趣的地方,一个是高亮作者评论,另外一个是文章置顶的实现。话说第一次在zww那儿看到,还不知道sticky post是个啥玩意……
一、高亮作者评论。但是发现很少人在用。
高亮作者,可以使用插件,这里不做讨论。用代码实现的话主要有两种方法。
第一种来自Matt Cutts,是比较古老了。
1.为主题添加一个“authcomment”样式来高亮作者评论
.authcomment {
background-color: #B3FFCC !
.authcomment {background-color: #B3FFCC !}
2.编辑 comments.php 并加入一些代码
通常comments.php可能含有如下语句:
&li class=”&?php echo $ ?&” id=”comment…
&li class=”&?php echo $oddcomment; ?&” id=”comment…
通过一些修改变成如下样式:
&li class=”&?php
/* Only use the authcomment class from style.css if the user_id is 1 (admin) */
if (1 == $comment-&user_id)
$oddcomment = “authcomment”;
?&” id=”comment…
&li class=”&?php/* Only use the authcomment class from style.css if the user_id is 1 (admin) */if (1 == $comment-&user_id)$oddcomment = “authcomment”;echo $oddcomment;?&” id=”comment…
这样就成功了。
————————————————————————————————–
另外一种可以直接在后台添加样式(需要登录后台才可以显示),遍历评论可以发现作者评论一般会含有类似class=”comment byuser comment-author-admin bypostauthor even depth-2″这样的样式,我们要做的就是添加一个comment-author-admin,让它显得与其他评论不一样,例如添加个背景图片、变一下颜色或者其他的。我是这么写的:
.ment-author-admin
span.avatarx{
background: #C04019;
padding: 4
.children li.comment-author-admin&&span.avatarx{background: #C04019;padding: 4px;}
其中children是子评论,因为我发表的更多是回复,回复都在子评论里嵌套。Avatarx是评论显示的头像的样式,这样就实现了我这里的样子。
二、Sticky post。中文应该叫做文章置顶,从wp2.7开始出现。基本可以这样实现:
1.首先查看index.php中关于显示文章部分的代码。
比如默认主题中:
&?php if (have_posts()) : ?&
&?php while (have_posts()) : the_post(); ?&
&div &?php post_class() ?& id="post-&?php the_ID(); ?&"&
&?php if (have_posts()) : ?&&?php while (have_posts()) : the_post(); ?&&div &?php post_class() ?& id="post-&?php the_ID(); ?&"&
关键就是确定有这个语句。如果没有,例如类似这样:
&&?php if(have_posts()) : while(have_posts()) : the_post(); ?&
&h3&&a href="&?php the_permalink(); ?&"&&?php the_title(); ?&&/a&&/h3&
&?php the_content(); ?&
&&?php if(have_posts()) : while(have_posts()) : the_post(); ?&&h3&&a href="&?php the_permalink(); ?&"&&?php the_title(); ?&&/a&&/h3&&?php the_content(); ?&&?php endwhile; endif; ?&
你就可以改写一下:
&&?php if(have_posts()) : while(have_posts()) : the_post(); ?&
&div &?php post_class(); ?&&
&h3&&a href="&?php the_permalink(); ?&"&&?php the_title(); ?&&/a&&/h3&
&?php the_content(); ?&
&&?php if(have_posts()) : while(have_posts()) : the_post(); ?&&div &?php post_class(); ?&&&h3&&a href="&?php the_permalink(); ?&"&&?php the_title(); ?&&/a&&/h3&&?php the_content(); ?&&/div&&?php endwhile; endif; ?&
实际就是把文章内容圈一个div出来,把这个div加上一个,就像默认主题里那样。
2.css中定义sticky文章的样式,可以根据主题需要来定义。比如我的是这么写的:
#entry .sticky {
background:url(images/sticky.png) top right no-
border:1px solid #EEE;
color:#000;}
#entry .sticky {padding:8px;background:url(images/sticky.png) top right no-repeat;border:1px solid #EEE;color:#000;}
3.后台发布文章的时候,选择“置顶这篇文章到首页,这样就完成了。
PS:Post_class的用处很多。更多解释请参考:
的相关文章
引用(已关闭):3
pingback from
pingback from
pingback from
- select -
WP札记 (89) 一句话评论 (8) 写代码 (6) 尝鲜试用 (36) 应用搜集 (7) 恐怖之旅 (32) 技术文档 (19) 淘电影 (37) 综合信息 (25) 网络互联 (20) 随便说说 (109)
WordPress (103) 生活点滴 (99) 当下热门 (65) WP技巧 (46) WordPress主题 (42) 恐怖电影/小说 (37) 软件 (24) Google (21) 尝鲜试用 (19) 陈奕迅 (13)
Active Friends
17233343526271
最多浏览文章
Copyright & Axiu Blog , All Rights Reserved.
Powered by

我要回帖

更多关于 wordpress 的文章

 

随机推荐