WordPress实现推荐相关文章功能代码
2014-01-04 00:00
579 查看
WordPress实现推荐相关文章功能有2种方法:一种是可以在单篇日志和 feed 中都生成推荐相关文章功能,不过,功能越强大,代码也就会相应较多,所以这里还提供第二种,仅在单篇日志中实现在相关日志的方法。
方法一:单篇日志和 feed 中都可以生成相关日志
把以下代码复制到 WordPress 的主题文件 functions.php 中:
在 WordPress 主题文件 single.php 中需要的位置插入以下代码即可:
将下面的代码添加到 single.php 要显示相关文章的位置即可:
显示样式需要自己写css,可以参考一下下面的:
1)在主题的 functions.php 的最后一个 ?> 前添加下面的代码:
自定义字段为 thumb 的图片>特色缩略图>文章第一张图片>随机图片/默认图片;
随机图片:请***10张图片,放在现用主题文件夹下的 images/pic/ 目录,图片为jpg格式,并且使用数字 1-10命名,比如 1.jpg;如果你不想用随机图片,请将 倒数第5行 前面的“//”去掉,然后给 倒数第7、9行 前面添加“//”注销,并且在现用主题的 /images/ 目录下添加一张名字为 default_thumb.jpg 的默认图片,这样,就会显示默认图片。
2)将下面的代码添加到 single.php 要显示相关文章的位置:
css样式自己写,也可参考一下:
方法一:单篇日志和 feed 中都可以生成相关日志
把以下代码复制到 WordPress 的主题文件 functions.php 中:
function wp_get_related_posts() { global $wpdb, $post,$table_prefix; $limit = 10; //显示几条相关文章 if(!$post->ID){return;} $now = current_time('mysql', 1); $tags = wp_get_post_tags($post->ID); $taglist = "'" . $tags[0]->term_id. "'"; $tagcount = count($tags); if ($tagcount > 1) { for ($i = 1; $i < $tagcount; $i++) { $taglist = $taglist . ", '" . $tags[$i]->term_id . "'"; } } $limitclause = "LIMIT $limit"; $q = "SELECT p.ID, p.post_title, p.post_date, p.comment_count, count(t_r.object_id) as cnt FROM $wpdb->term_taxonomy t_t, $wpdb->term_relationships t_r, $wpdb->posts p WHERE t_t.taxonomy ='post_tag' AND t_t.term_taxonomy_id = t_r.term_taxonomy_id AND t_r.object_id = p.ID AND (t_t.term_id IN ($taglist)) AND p.ID != $post->ID AND p.post_status = 'publish' AND p.post_date_gmt < '$now' GROUP BY t_r.object_id ORDER BY cnt DESC, p.post_date_gmt DESC $limitclause;"; $related_posts = $wpdb->get_results($q); $output = ""; if (!$related_posts) { $output .= '<li>无相关日志</li>'; } foreach ($related_posts as $related_post ) { $dateformat = get_option('date_format'); $output .= '<li>'; $output .= '<a href="'.get_permalink($related_post->ID).'" title="'.wptexturize($related_post->post_title).' ('.mysql2date($dateformat, $related_post->post_date).')">'.wptexturize($related_post->post_title).'</a> ('. $related_post->comment_count .')'; $output .= '</li>'; } $output = '<h3>相关日志</h3><ul>' . $output . '</ul>'; return $output; } function wp_related_posts_attach($content) { if (is_single()||is_feed()) { $output = wp_get_related_posts(); $content = $content . $output; } return $content; } add_filter('the_content', 'wp_related_posts_attach',100);方法二:仅在单篇日志中显示相关日志
在 WordPress 主题文件 single.php 中需要的位置插入以下代码即可:
<h3>相关日志</h3> <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="<?php the_title_attribute(); ?>"><?php the_title();?> <?php comments_number(' ','(1)','(%)'); ?></a></li> <?php endwhile; } } wp_reset_query(); ?> </ul>1.添加标题列表样式的相关文章
将下面的代码添加到 single.php 要显示相关文章的位置即可:
<h3>相关文章</h3> <ul> <?php $post_num = 8; $exclude_id = $post->ID; $posttags = get_the_tags(); $i = 0; if ( $posttags ) { $tags = ''; foreach ( $posttags as $tag ) $tags .= $tag->term_id . ','; $args = array( 'post_status' => 'publish', 'tag__in' => explode(',', $tags), 'post__not_in' => explode(',', $exclude_id), 'caller_get_posts' => 1, 'orderby' => 'comment_date', 'posts_per_page' => $post_num, ); query_posts($args); while( have_posts() ) { the_post(); ?> <li><a rel="bookmark" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" target="_blank"><?php the_title(); ?></a></li> <?php $exclude_id .= ',' . $post->ID; $i ++; } wp_reset_query(); } if ( $i < $post_num ) { $cats = ''; foreach ( get_the_category() as $cat ) $cats .= $cat->cat_ID . ','; $args = array( 'category__in' => explode(',', $cats), 'post__not_in' => explode(',', $exclude_id), 'caller_get_posts' => 1, 'orderby' => 'comment_date', 'posts_per_page' => $post_num - $i ); query_posts($args); while( have_posts() ) { the_post(); ?> <li><a rel="bookmark" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" target="_blank"><?php the_title(); ?></a></li> <?php $i++; } wp_reset_query(); } if ( $i == 0 ) echo '<li>没有相关文章!</li>'; ?> </ul>PS:第四行$post_num = 8;表示显示8篇文章,请根据自己的需要修改。
显示样式需要自己写css,可以参考一下下面的:
.related_posts{margin-top:5px;} .related_posts li{margin-left:20px;color:#444;list-style:circle;font-size:14px;line-height:26px;padding:0 0 0 5px}2.添加含缩略图的相关文章
1)在主题的 functions.php 的最后一个 ?> 前添加下面的代码:
//添加特色缩略图支持 if ( function_exists('add_theme_support') )add_theme_support('post-thumbnails'); //输出缩略图地址 From wpdaxue.com function post_thumbnail_src(){ global $post; if( $values = get_post_custom_values("thumb") ) { //输出自定义域图片地址 $values = get_post_custom_values("thumb"); $post_thumbnail_src = $values [0]; } elseif( has_post_thumbnail() ){ //如果有特色缩略图,则输出缩略图地址 $thumbnail_src = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID),'full'); $post_thumbnail_src = $thumbnail_src [0]; } else { $post_thumbnail_src = ''; ob_start(); ob_end_clean(); $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches); $post_thumbnail_src = $matches [1] [0]; //获取该图片 src if(empty($post_thumbnail_src)){ //如果日志中没有图片,则显示随机图片 $random = mt_rand(1, 10); echo get_bloginfo('template_url'); echo '/images/pic/'.$random.'.jpg'; //如果日志中没有图片,则显示默认图片 //echo '/images/default_thumb.jpg'; } }; echo $post_thumbnail_src; }PS:上面的代码主要是获取图片链接,获取的顺序是:
自定义字段为 thumb 的图片>特色缩略图>文章第一张图片>随机图片/默认图片;
随机图片:请***10张图片,放在现用主题文件夹下的 images/pic/ 目录,图片为jpg格式,并且使用数字 1-10命名,比如 1.jpg;如果你不想用随机图片,请将 倒数第5行 前面的“//”去掉,然后给 倒数第7、9行 前面添加“//”注销,并且在现用主题的 /images/ 目录下添加一张名字为 default_thumb.jpg 的默认图片,这样,就会显示默认图片。
2)将下面的代码添加到 single.php 要显示相关文章的位置:
<h3>相关文章</h3> <ul> <?php $post_num = 4; $exclude_id = $post->ID; $posttags = get_the_tags(); $i = 0; if ( $posttags ) { $tags = ''; foreach ( $posttags as $tag ) $tags .= $tag->term_id . ','; $args = array( 'post_status' => 'publish', 'tag__in' => explode(',', $tags), 'post__not_in' => explode(',', $exclude_id), 'caller_get_posts' => 1, 'orderby' => 'comment_date', 'posts_per_page' => $post_num ); query_posts($args); while( have_posts() ) { the_post(); ?> <li > <div> <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" target="_blank"> <img src="<?php echo post_thumbnail_src(); ?>" alt="<?php the_title(); ?>" /> </a> </div> <div><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" target="_blank" rel="bookmark"><?php the_title(); ?></a></div> </li> <?php $exclude_id .= ',' . $post->ID; $i ++; } wp_reset_query(); } if ( $i < $post_num ) { $cats = ''; foreach ( get_the_category() as $cat ) $cats .= $cat->cat_ID . ','; $args = array( 'category__in' => explode(',', $cats), 'post__not_in' => explode(',', $exclude_id), 'caller_get_posts' => 1, 'orderby' => 'comment_date', 'posts_per_page' => $post_num - $i ); query_posts($args); while( have_posts() ) { the_post(); ?> <li > <div> <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" target="_blank"> <img src="<?php echo post_thumbnail_src(); ?>" alt="<?php the_title(); ?>" /> </a> </div> <div><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" target="_blank" rel="bookmark"><?php the_title(); ?></a></div> </li> <?php $i++; } wp_reset_query(); } if ( $i == 0 ) echo '<div>没有相关文章!</div>'; ?> </ul>PS:第四行$post_num = 4; 表示调用4篇文章,请根据自己需要修改。
css样式自己写,也可参考一下:
.related_posts{margin-top:5px;} .related_img{width:600px;height:210px;} .related_box{float:left;overflow:hidden;margin-top:5px;width:148px;border-right:1px #eee solid} .related_box:hover{background:#f9f9f9} .related_box .r_title{width:auto;height:72px;font-weight:400;font-size:14px;margin:0 10px;overflow:hidden;} .related_box .r_pic{margin:6px} .related_box .r_pic img{width:130px;height:100px;border:1px solid #e1e1e1;background:#fff;padding:2px}注:代码参考自cmhello的hcms主题。
相关文章推荐
- WordPress代码实现相关文章的几种方法(二)
- WordPress用代码实现相关文章(关联文章)的几种方法
- 用代码实现为WordPress文章添加浏览次数(views)统计功能
- php实现相关文章功能代码方法
- PHP简单实现“相关文章推荐”功能的方法
- PHP“相关文章推荐”功能的简易实现
- WordPress代码实现相关文章的几种方法
- WordPress实现相关文章功能
- 代码实现WordPress文章浏览次数统计功能
- WordPress代码实现相关文章的几种方法
- WordPress代码实现相关文章的几种方法(二)
- WordPress代码实现相关文章的几种方法(一)
- WordPress纯代码高仿 无觅相关文章 图文模式功能
- PHP简单实现“相关文章推荐”功能的方法
- WordPress代码实现相关文章的几种方法(一)
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载续][重点推荐控件]
- 实现功能点1: 对 Maria 代码 git ssh 相关接口进行重构
- springmvc dubbo整合cms实现UC浏览器文章相关功能
- wordpress自定义url参数实现路由功能的代码示例
- 利用后台代码设计或实现水晶报表工具栏相关功能