您所在的位置: 首页 > 健宇学院 > 网站技术 > 代码实现文章内容WordPress相关日志

代码实现文章内容WordPress相关日志

今天,把那个之前的相关文章调用更换了,因为之前的调用太麻烦了,如果文章中不添加标签,就不会有相关文章调用出来,本来想在那基础上修改修改的,但是无法使用判断,跟其他调用的代码有所冲突。

原因很简单,原来的相关文章调用代码是直接写在详细文章页面里的,这次就直接functions.php写进这里了,同时如果没有匹配到相关文章,则会显示随即文章。

在这里,健宇也分享出原“相关文章”调用的代码出来吧!


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<div class="tab m10_t">
                   <div class="xg">
                       <div class="xg_t"></div>
                        <div class="xg_c">
                           <div class="title">
                                <div class="name"><h2>相关文章</h2></div>
                            </div>
                            <div class="xg_cont">

                               <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'=>8,'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>
                                    <span><?php the_time(__('Y/m/d', 'kubrick')) ?></span>
                                    <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php echo cut_str($post->post_title,28); ?></a><?php comments_number('','(1条评论)','(%条评论)'); ?></li>
                                 <?php
                                        endwhile;}}wp_reset_query();
                                 ?>
                               </ul>
                            </div>
                        </div>
                        <div class="xg_b"></div>
                    </div>
                    <!-- end box -->
                </div>
                <!-- end tab-->

这就是之前用的代码,如果要使用,添加到single.php文件相应的地方即可调用。

言归正传,说一下如何直接用代码实现“相关日志”的功能。

  1. 打开当前所用的模版文件夹
  2. 找到functions.php
  3. 添加如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
//WordPress Related Posts
$wp_rp=array(
'limit'=>9,              //相关文章数量
'wp_rp_rss'=>true,       //是否在feed 中显示相关文章
'wp_no_rp'=>'random',    //无相关文章时的选择:text 或random(random-随机文章)
'wp_rp_date'=>false,     //显示文章发布日期
'wp_rp_comments'=>false, //显示文章评论数
'wp_rp_title_tag'=>'h3', //选择相关文章标题标签(h2 ,h3 ,h4 ,p ,div)
);
function wp_get_random_posts ($limitclause="") {
global $wpdb, $post;
 
$q = "SELECT ID, post_title, post_content,post_excerpt, post_date, comment_count FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' AND ID != $post->ID ORDER BY RAND() $limitclause";
return $wpdb->get_results($q);
}
 
function wp_get_related_posts()
{  
global $wpdb, $post,$wp_rp;
$limit =$wp_rp["limit"];
$wp_rp_title='相关日志:';    //相关文章标题
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 . "'";
}
}
 
if ($limit) {
$limitclause = "LIMIT $limit";
}   else {
$limitclause = "LIMIT 10";
}
 
$q = "SELECT p.ID, p.post_title, p.post_content,p.post_excerpt, 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)
{
if($wp_rp['wp_no_rp'] == "text")
{
$output  .= '<li>无相关日志</li>';
}
else
 
{
if($wp_rp['wp_no_rp'] == "random")
{
$wp_no_rp_text= '随机文章:';
$related_posts = wp_get_random_posts($limitclause);
}  
 
$wp_rp_title = $wp_no_rp_text;
}
}
 
foreach ($related_posts as $related_post )
{
$output .= '<li>';
if($wp_rp['wp_rp_date'])
{
$dateformat = get_option('date_format');
$output .= mysql2date($dateformat, $related_post->post_date) . "  —  ";   //日期和文章标题间隔符,默认是 —
}
$output .=  '<a href="'.get_permalink($related_post->ID).'" title="'.wptexturize($related_post->post_title).'">'.wptexturize($related_post->post_title).'</a>';
if ($wp_rp["wp_rp_comments"])
{
$output .=  " (" . $related_post->comment_count . ")";
}
$output .=  '</li>';
}
$output = '<ul class="st-related-posts">' . $output . '</ul>';
$wp_rp_title_tag = $wp_rp["wp_rp_title_tag"];
 
if(!$wp_rp_title_tag)
$wp_rp_title_tag ='h3';
if($wp_rp_title != '')
$output =  '<'.$wp_rp_title_tag.' >'.$wp_rp_title .'</'.$wp_rp_title_tag.'>'. $output;
return $output;
}
 
function wp_related_posts_attach($content)
{
global $wp_rp;
if (is_single()||(is_feed() && $wp_rp["wp_rp_rss"]))
{
$output = wp_get_related_posts();
$content = $content.$output;
}
return $content;
}
add_filter('the_content', 'wp_related_posts_attach',100);

大家将这段代码添加到functions.php文件里即可调用。

效果请看本站效果!

请尊重我们的辛苦付出,未经允许,请不要转载 健宇工作室 的文章,鄙视各种无耻的采集行为!

健宇工作室分享区  YY教学频道号:63565426

相关日志:

目前有 1 条留言 其中:访客:1 条, 博主:0 条

  1. 溦风 : 2014年05月19日10:43:22  -9楼 @回复 回复

    亲,请问下,你这个文章地下的2列的相关文章怎么实现的?能帮忙解答下吗?谢谢,我QQ274591668.

给我留言

48 + 50 = 两数相加后,请输入答案