今天谈到的这5类文章分别是:最新文章,最新评论,热门文章,相关文章以及随机文章在Wordpress中的免插件输出,相信大家在使用和设计模板过程中都可能会用到.插件虽然可以提供大家方便的呈现输出功能,但是多少会拖一点速度。
以下几种开始是从Jinwen Say那边看到的,并找到muki那里的修改版.
如果你也是喜欢不用插件实现一些常用功能,并喜欢折腾代码的朋友,那么请继续往下看;
如果对上述情况不感兴趣的朋友,也请你拍砖.呵呵.
1.免插件输出最新文章(在Wordpress模板中需要呈现的地方输入以下代码即可.)
<?php
$limit
= get_option(
'posts_per_page'
);
$paged
= (get_query_var(
'paged'
)) ? get_query_var(
'paged'
) : 1;
query_posts(
'showposts='
.
$limit
=7 .
'&paged='
.
$paged
);
$wp_query
->is_archive = true;
$wp_query
->is_home = false;
?>
<?php
while
(have_posts()) : the_post();
if
(!(
$first_post
==
$post
->ID)) : ?>
<ul>
<li><a href=
"<?php the_permalink() ?>"
rel=
"bookmark"
title=
"Permanent Link to <?php the_title_attribute(); ?>"
><?php the_title(); ?></a></li>
</ul>
<?php
endif
;
endwhile
; ?>
我们的muki童鞋还提出了另一种简单代码即使用archives的调用函数呈现:
<?php get_archives(
"postbypost"
,
"6"
,
"html"
,
" "
,
" "
); ?>
这句代码实现输出的效果和上面那一大段是一样一样一样的~
2.免插件输出最新评论(在Wordpress模板中需要呈现的地方输入以下代码即可.)
<?php
global
$wpdb
;
$sql
=
"SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,comment_author_url, SUBSTRING(comment_content,1,30) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) WHERE comment_approved = '1' AND comment_type = "
AND post_password =
" ORDER BY comment_date_gmt DESC LIMIT 10"
;
$comments
=
$wpdb
->get_results(
$sql
);
$output
=
$pre_HTML
;
foreach
(
$comments
as
$comment
) {
$output
.=
"n<li>"
.
"<a href="
" . get_permalink($comment->ID)."
#comment-
" . $comment->comment_ID . "
" title="
on
".$comment->post_title . "
">"
.
strip_tags
(
$comment
->comment_author).
"</a>"
.
": "
.
strip_tags
(
$comment
->com_excerpt).
"</li>"
;
}
$output
.=
$post_HTML
;
echo
$output
;
?>
如果在使用过程中出现了错误如下:
Parse error: syntax error, unexpected '='
那么请换用以下代码试试:
<?php
global
$wpdb
;
$sql
= "SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,comment_author_url, SUBSTRING(comment_content,1,30) AS com_excerpt FROM
$wpdb
->comments LEFT OUTER JOIN
$wpdb
->posts ON (
$wpdb
->comments.comment_post_ID =
$wpdb
->posts.ID)WHERE comment_approved =
'1'
AND comment_type = post_password ORDER BY comment_date_gmt DESC LIMIT 10";
$comments
=
$wpdb
->get_results(
$sql
);
$output
=
$pre_HTML
;
foreach
(
$comments
as
$comment
) {
$output
.=
"n<li>"
.
"<a href="
" . get_permalink($comment->ID)."
#comment-
" . $comment->comment_ID . "
" title="
on
".$comment->post_title . "
">"
.
strip_tags
(
$comment
->comment_author).
"</a>"
.
": "
.
strip_tags
(
$comment
->com_excerpt).
"</li>"
;
}
$output
.=
$post_HTML
;
echo
$output
;
?>
上面这段代码是对第一种代码中"判断是否要输出密码文章的评论"产生的错误来修改的,默认预设密码的文章的评论不会显示在输出信息中。假使你希望密码文章的评论也会显示,就将" AND comment_type = post_password "给移除即可。
3.免插件输出热门文章(在Wordpress模板中需要呈现的地方输入以下代码即可.)
<ul>
<?php
$result
=
$wpdb
->get_results(
"SELECT comment_count,ID,post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , 10"
);
foreach
(
$result
as
$post
) {
setup_postdata(
$post
);
$postid
=
$post
->ID;
$title
=
$post
->post_title;
$commentcount
=
$post
->comment_count;
if
(
$commentcount
!= 0) { ?>
<li><a href=
"<?php echo get_permalink($postid); ?>"
title=
"<?php echo $title ?>"
>
<?php
echo
$title
?></a> (<?php
echo
$commentcount
?>)</li>
<?php } } ?>
</ul>
这个不用多说,根据评论数进行排序输出.默认格式是文章标题后面加上评论数目.用了就知道呵呵.
4.免插件输出相关文章(在Wordpress模板中需要呈现的地方输入以下代码即可.)
<ul>
<?php
$tags
= wp_get_post_tags(
$post
->ID);
if
(
$tags
) {
$first_tag
=
$tags
[0]->term_id;
$args
=
array
(
'tag__in'
=>
array
(
$first_tag
),
'post__not_in'
=>
array
(
$post
->ID),
'showposts'
=>10,
'caller_get_posts'
=>1
);
$my_query
=
new
WP_Query(
$args
);
if
(
$my_query
->have_posts() ) {
while
(
$my_query
->have_posts()) :
$my_query
->the_post(); ?>
<li><a href=
"<?php the_permalink() ?>"
rel=
"bookmark"
title=
"Permanent Link to <?php the_title_attribute(); ?>"
><?php the_title(); ?> <?php comments_number(
' '
,
'(1)'
,
'(%)'
); ?></a> </li>
<?php
endwhile
;
}
}
?>
</ul>
此段代码是根据文章内的tag也就是标签来输出相关的文章,默认输出格式也是文章标题后面加评论数.
5.免插件输出随机文章(在Wordpress模板中需要呈现的地方输入以下代码即可.)
<?php
query_posts(
array
(
'orderby'
=>
'rand'
,
'showposts'
=> 1));
if
(have_posts()) :
while
(have_posts()) : the_post();
the_title();
the_excerpt();
endwhile
;
endif
; ?>
使用上面的代码可以输出随机的文章,输出的效果是随机文章标题和文章的摘要.如果你只需要输出标题,那么去掉the_excerpt();这句应该就可以了.
或者把你可以使用muki童鞋修改的代码:
<?php
query_posts(
array
(
'orderby'
=>
'rand'
,
'showposts'
=> 2));
if
(have_posts()) :
while
(have_posts()) : the_post();?>
<a href=
"<?php the_permalink() ?>"
rel=
"bookmark"
title=
"Permanent Link to <?php the_title(); ?>"
><?php the_title(); ?></a> <?php comments_number(
''
,
'(1)'
,
'(%)'
); ?><br />
<?php
endwhile
;
endif
; ?>
上面的代码输出效果是标题可以点击,以及后面自带评论数目。
至于要显示多少篇随机文章,修改部份在 'showposts' => X 的地方,将 X 改成想要的数目即可。
关于随机文章我曾经还提到一种随机进入一篇文章的实现方法,温习一下:
<div>
<?php
$rand_post
=get_posts(
'numberposts=1&orderby=rand'
);
foreach
(
$rand_post
as
$post
) : ?>
<a title=
"随机进入一篇文章"
href=
"<?php the_permalink(); ?>"
>
随机进入一篇文章
</a>
<?php
endforeach
; ?>
</div>
关于免插件,万戈可谓是免插件帝啦,许多奇异的效果可以从他那里得来:传送门.
最后引用muki童鞋一句话:"假设你自己会使用Wordpress提供的代码修改成你想要的功能,所得到的成就感是不是也会更高呢^^"
呵呵,祝愿大家折腾的愉快!!
原文
请问,相关文章的插在哪
管理员 明镜: 2010年10月15日 10:33 下午 ∇地下1层
把相关代码插在你需要放的地方,比如,文章末尾或是侧边栏。