现在的位置: 首页 > 互联网络 > WP相关 > 正文

WordPress免插件实现五类文章输出

2010-08-03 00:36 WP相关 ⁄ 共 4570字 ⁄ 字号 评论 4 条

今天谈到的这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>&nbsp;<?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提供的代码修改成你想要的功能,所得到的成就感是不是也会更高呢^^"

呵呵,祝愿大家折腾的愉快!!
原文

目前有 4 条留言    访客:1 条, 博主:1 条 ,引用: 2 条

  1. nic 2010年10月15日 3:15 下午  @回复  Δ1楼 回复

    请问,相关文章的插在哪


    • 管理员
      明镜 2010年10月15日 10:33 下午  @回复  ∇地下1层 回复

      把相关代码插在你需要放的地方,比如,文章末尾或是侧边栏。

外部的引用: 2 条

  • 求索·通讯:第1期 求索阁成长掠影 « 求索阁
  • 如何实现在文章内容下显示 相关文章 ? – WordPress – 开发者

给我留言

留言无头像?