皇家元林

我的主题代码小记

最近在制作wp主题的过程中,学习了很多网站建设的知识,简单的html+css还可以搞定的,复杂点的php函数就傻眼了。

所以把最近我主题上用到的代码记录下来,以备在以后的主题上使用到。

Comment Mail Notify:把邮件回复功能整合到主题里

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
/* comment_mail_notify v1.0 by willin kan. (有勾選欄, 由訪客決定) */
function comment_mail_notify($comment_id) {
  $admin_notify = '1'; // admin 要不要收回覆通知 ( '1'=要 ; '0'=不要 )
  $admin_email = get_bloginfo ('admin_email'); // $admin_email 可改為你指定的 e-mail.
  $comment = get_comment($comment_id);
  $comment_author_email = trim($comment->comment_author_email);
  $parent_id = $comment->comment_parent ? $comment->comment_parent : '';
  global $wpdb;
  if ($wpdb->query("Describe {$wpdb->comments} comment_mail_notify") == '')
    $wpdb->query("ALTER TABLE {$wpdb->comments} ADD COLUMN comment_mail_notify TINYINT NOT NULL DEFAULT 0;");
  if (($comment_author_email != $admin_email && isset($_POST['comment_mail_notify'])) || ($comment_author_email == $admin_email && $admin_notify == '1'))
    $wpdb->query("UPDATE {$wpdb->comments} SET comment_mail_notify='1' WHERE comment_ID='$comment_id'");
  $notify = $parent_id ? get_comment($parent_id)->comment_mail_notify : '0';
  $spam_confirmed = $comment->comment_approved;
  if ($parent_id != '' && $spam_confirmed != 'spam' && $notify == '1') {
    $wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); // e-mail 發出點, no-reply 可改為可用的 e-mail.
    $to = trim(get_comment($parent_id)->comment_author_email);
    $subject = '您在 [' . get_option("blogname") . '] 的留言有了回應';
    $message = '
    <div style="background-color:#eef2fa; border:1px solid #d8e3e8; color:#111; padding:0 15px; -moz-border-radius:5px; -webkit-border-radius:5px; -khtml-border-radius:5px;">
      <p>' . trim(get_comment($parent_id)->comment_author) . ', 您好!</p>
      <p>您曾在《' . get_the_title($comment->comment_post_ID) . '》的留言:<br />'
       . trim(get_comment($parent_id)->comment_content) . '</p>
      <p>' . trim($comment->comment_author) . ' 給您的回應:<br />'
       . trim($comment->comment_content) . '<br /></p>
      <p>您可以點擊 <a href="' . htmlspecialchars(get_comment_link($parent_id)) . '">查看回應完整內容</a></p>
      <p>歡迎再度光臨 <a href="' . get_option('home') . '">' . get_option('blogname') . '</a></p>
      <p>(此郵件由系統自動發出, 請勿回覆.)</p>
    </div>';
    $from = "From: \"" . get_option('blogname') . "\" <$wp_email>";
    $headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
    wp_mail( $to, $subject, $message, $headers );
    //echo 'mail to ', $to, '<br/> ' , $subject, $message; // for testing
  }
}
add_action('comment_post', 'comment_mail_notify');
 
/* 自動加勾選欄 */
function add_checkbox() {
  echo '<input type="checkbox" name="comment_mail_notify" id="comment_mail_notify" value="comment_mail_notify" checked="checked" style="margin-left:20px;" /><label for="comment_mail_notify">有人回覆時郵件通知我</label>';
}
add_action('comment_form', 'add_checkbox');
 
// -- END ----------------------------------------

把这段代码放入functions.php即可。

解决WordPress分页标题重复问题

1
<title><?php if ( is_paged() ){ ?><?php printf( __('Page %1$s of %2$s', ''), intval( get_query_var('paged')), $wp_query->max_num_pages); ?> - <?php } ?><?php if ( is_single() || is_page() || is_category() || is_tag() ) { wp_title(''); } else { bloginfo('name'); } ?></title>

直接替代header.php的title标签即可。

不用插件让你的WP标签随机彩色显示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* 标签彩色显示代码开始 */
function colorCloud($text) {
$text = preg_replace_callback('|<a (.+?)>|i', 'colorCloudCallback', $text);
return $text;
}
function colorCloudCallback($matches) {
$text = $matches[1];
$color = dechex(rand(0,16777215));
$pattern = '/style=(\'|\")(.*)(\'|\")/i';
$text = preg_replace($pattern, "style=\"color:#{$color};$2;\"", $text);
return "<a $text>";
}
add_filter('wp_tag_cloud', 'colorCloud', 1);
/* 标签彩色显示代码结束 */

直接放在functions.php文件即可。

wordpress个性化增加关键词和描述

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?if (is_home()){
	$description ="刘元林-皇家元林-记录生命的点滴,分享生命的快乐,怀恋以往的回忆,享受网络无国界的自由";
	$keywords ="刘元林, 皇家元林, Seven Blog, 7刊, 回忆, 笔记, 工作, 生活, 影片, 杂谈, 翻墙, 自由";
} elseif (is_single()){
    if ($post->post_excerpt) {
        $description     = $post->post_excerpt;
    } else {
        $description = substr(strip_tags($post->post_content),0,220);
    }
    $keywords = "";      
    $tags = wp_get_post_tags($post->ID);
    foreach ($tags as $tag ) {
        $keywords = $keywords . $tag->name . ", ";
    }
} elseif ( is_category() ) {
	$description = category_description();
    $keywords ="刘元林, 皇家元林, Seven Blog, 7刊, 回忆, 笔记, 工作, 生活, 影片, 杂谈, 翻墙, 自由";
}else{
	$description ="刘元林-皇家元林-记录生命的点滴,分享生命的快乐,怀恋以往的回忆,享受网络无国界的自由";
	$keywords ="刘元林, 皇家元林, Seven Blog, 7刊, 回忆, 笔记, 工作, 生活, 影片, 杂谈, 翻墙, 自由";
}
?>
	<meta name="keywords" content="<?php echo $keywords; ?>" />
	<meta name="description" content="<?php echo $description; ?>" />

放在header.php的head标签里。。。

社会标签:分享按钮代码

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
                <table style="margin: 0pt 0pt 0pt -2px;">
                                                <tbody><tr>
                                                        <td>分享到:</td>
                    <td style="overflow: hidden; float: left; height: 16px;"><a href="javascript:void((function(s,d,e){try{}catch(e){}var f='http://v.t.sina.com.cn/share/share.php?',u=d.location.href,p=['url=',e(u),'&title=',e(d.title),'&appkey=2924220432'].join('');function a(){if(!window.open([f,p].join(''),'mb',['toolbar=0,status=0,resizable=1,width=620,height=450,left=',(s.width-620)/2,',top=',(s.height-450)/2].join('')))u.href=[f,p].join('');};if(/Firefox/.test(navigator.userAgent)){setTimeout(a,0)}else{a()}})(screen,document,encodeURIComponent));">
    <img style="border: medium none;" title="分享到新浪微博" alt="分享到新浪微博" src="http://r57zma.blu.livefilestore.com/y1pUbpSAHV9M-JkXM8Tm39iWxYklMTUhASYP7kqsqO1x5BHCLXb3LZnyFJEEwHHzf4HsctB2NGejyYioGlmdsKc9gBUYm-0W68w/s_purple.gif?psid=1">
    </a></td>
    <td style="overflow: hidden; float: left; height: 16px; padding: 0pt 0pt 0pt 3px;"><a href="javascript:u=location.href;t=document.title;t=t.substr(0,76);c=%22%22+(window.getSelection?window.getSelection():document.getSelection?document.getSelection():document.selection.createRange().text);c=c.substr(0,180);location=%22http://zuosa.com/collect/Collect.aspx?t=%22+encodeURIComponent(t)+%22&u=%22+encodeURIComponent(u);void%200"><img style="border: medium none;" title="分享到做啥" alt="分享到做啥" src="http://r57zma.blu.livefilestore.com/y1pzAQuy7wrQOEt_IMBRY4rHSaLwv8RfBvBrqRy-oWxvv1t0BWD6s22jAaI6FRLLXVEF-DQFU8CAMaYN3zmvnRSTe3BrltnAzy2/zuosa.gif?psid=1">
    </a></td>
    <td style="overflow: hidden; float: left; height: 16px; padding: 0pt 0pt 0pt 3px;"><a href="http://xianguo.com/service/submitdigg/?link=<?php the_permalink() ?>">
    <img style="border: medium none;" title="推荐到鲜果" alt="推荐到鲜果" src="http://r57zma.blu.livefilestore.com/y1ptW7AjK7SVkiJDGSxlRlDeuAXjqey7vcUNeB_7Sbq5h4t7fxbEOznc2onVwixfwNpJIbCDDsefeqq19DjDvyT4U3YTYgAPiu1/xianguo.png?psid=1">
    </a></td>
    <td style="overflow: hidden; float: left; height: 16px; padding: 0pt 0pt 0pt 3px;"><a href="https://favorites.live.com/quickadd.aspx?marklet=1&url=' . $url . '&&title=' . $title . '">
    <img style="border: medium none;" title="使用Live分享或收藏此文" alt="使用Live分享或收藏此文" src="http://r57zma.blu.livefilestore.com/y1pMBDfOJYQqT9ZWjkelS4oldE8paeKRBVaWsv3VQ_iipTq5oplGAlkpjsI3gE0TGeI_PWg_wTDFT9WYqYPjUxI_PB7nIO-lT-z/live.png?psid=1">
    </a></td>
    <td style="overflow: hidden; float: left; height: 16px; padding: 0pt 0pt 0pt 3px;"><a href="javascript:window.open('http://shuqian.qq.com/post?from=3&title='+encodeURIComponent(document.title)+'&uri='+encodeURIComponent(document.location.href)+'&jumpback=2&noui=1','favit','width=930,height=470,left=50,top=50,toolbar=no,menubar=no,location=no,scrollbars=yes,status=yes,resizable=yes');void(0)">
    <img style="border: medium none;" title="收藏到QQ书签" alt="收藏到QQ书签" src="http://r57zma.blu.livefilestore.com/y1pTV_Mt8MuhPLNW0_4Rq92vKC22A8LrwX1sYPnqPc2AUS5CnRcekM4xmfx9tm1che-c4nS_tce-O29h0b_zqWoLLrcvvaQuS2f/qq.gif?psid=1">
    </a></td>
    <td style="overflow: hidden; float: left; height: 16px; padding: 0pt 0pt 0pt 3px;"><a href="javascript:window.open('http://cang.baidu.com/do/add?it='+encodeURIComponent(document.title.substring(0,76))+'&iu='+encodeURIComponent(location.href)+'&fr=ien#nw=1','_blank','scrollbars=no,width=600,height=450,left=75,top=20,status=no,resizable=yes'); void 0">
    <img style="border: medium none;" title="添加到百度搜藏" alt="添加到百度搜藏" src="http://r57zma.blu.livefilestore.com/y1pAzjEgE_ha3GIYpSTmaPkotjApE3o55uHkwdyZW4_78-zB8w8ZIxjuNd_hk0aWGLhpRU8eC-O-duExXZY1h5BhQuuTRvO_gI1/baidu.jpg?psid=1">
    </a></td>
    <td style="overflow: hidden; float: left; height: 16px; padding: 0pt 0pt 0pt 3px;"><a rel="external" href="http://www.google.com/bookmarks/mark?op=edit&bkmk=' . $url . '&title=' . $title . '">
    <img style="border: medium none;" title="使用谷歌分享或收藏此文" alt="使用谷歌分享或收藏此文" src="http://r57zma.blu.livefilestore.com/y1piEBMZzvsbUI9R0DJlM5GzmsaaES3zseiX7gpYbjymcWFV6hGMY8We36QAKn_Z7BLLTOlJ6qQXtLOXssn-eDHdAnUMkSt1HBD/google.jpg?psid=1">
    </a></td>
    <td style="overflow: hidden; float: left; height: 16px; padding: 0pt 0pt 0pt 3px;"><a href="javascript:void((function(s,d,e){if(/renren\.com/.test(d.location))return;var f='http://share.renren.com/share/buttonshare?link=',u=d.location,l=d.title,p=[e(u),'&title=',e(l)].join('');function%20a(){if(!window.open([f,p].join(''),'xnshare',['toolbar=0,status=0,resizable=1,width=626,height=436,left=',(s.width-626)/2,',top=',(s.height-436)/2].join('')))u.href=[f,p].join('');};if(/Firefox/.test(navigator.userAgent))setTimeout(a,0);else%20a();})(screen,document,encodeURIComponent));">
    <img style="border: medium none;" alt="分享到人人" title="分享到人人" src="http://public.blu.livefilestore.com/y1pFRvoxDtIa9FcqP0dElTL3LJiEhAeCeshotZqnj4tS7ffCli-8EzIdz6MUK0PTlNiE8gitz_6ggxEU8xD0yY07A/renren.png?psid=1">
    </a></td>
    <td style="overflow: hidden; float: left; height: 16px; padding: 0pt 0pt 0pt 3px;"><a href="javascript:window.open('http://www.kaixin001.com/repaste/share.php?rtitle='+encodeURIComponent(document.title.substring(0,76))+'&rurl='+encodeURIComponent(location.href)+'&rcontent=','_blank','scrollbars=no,width=600,height=450,left=75,top=20,status=no,resizable=yes'); void 0">
    <img style="border: medium none;" alt="转帖到开心网" title="转帖到开心网" src="http://public.blu.livefilestore.com/y1p19qCBAUu2bn3N6eGWkS4-WdsGlvabOq6_kvK3gaRrJ_B1QAwbZzL2gYI6dbyhYuYA8yP2dwDYahoLsSKD7GzYw/kaixin001.gif?psid=1">
    </a></td>
    <td><script type="text/javascript" src="http://9.douban.com/js/button_widget.js"></script></td>
                                                        </tr>
                                                </tbody></table>

这个放在相应位置,具体在哪随便你了!代码中用到的图片我都上传到空间去了,支持外链的,大家随便用。

我正在用的不用插件的pagenavi-翻页导航

在function.php文件加上以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
function par_pagenavi($range = 9){
        global $paged, $wp_query;
        if ( !$max_page ) {$max_page = $wp_query->max_num_pages;}
        if($max_page > 1){if(!$paged){$paged = 1;}
        if($paged != 1){echo "<a href='" . get_pagenum_link(1) . "' class='extend' title='跳转到首页'> 返回首页 </a>";}
        previous_posts_link(' 上一页 ');
    if($max_page > $range){
                if($paged < $range){for($i = 1; $i <= ($range + 1); $i++){echo "<a href='" . get_pagenum_link($i) ."'";
                if($i==$paged)echo " class='current'";echo ">$i</a>";}}
    elseif($paged >= ($max_page - ceil(($range/2)))){
                for($i = $max_page - $range; $i <= $max_page; $i++){echo "<a href='" . get_pagenum_link($i) ."'";
                if($i==$paged)echo " class='current'";echo ">$i</a>";}}
        elseif($paged >= $range && $paged < ($max_page - ceil(($range/2)))){
                for($i = ($paged - ceil($range/2)); $i <= ($paged + ceil(($range/2))); $i++){echo "<a href='" . get_pagenum_link($i) ."'";if($i==$paged) echo " class='current'";echo ">$i</a>";}}}
    else{for($i = 1; $i <= $max_page; $i++){echo "<a href='" . get_pagenum_link($i) ."'";
    if($i==$paged)echo " class='current'";echo ">$i</a>";}}
        next_posts_link(' 下一页 ');
    if($paged != $max_page){echo "<a href='" . get_pagenum_link($max_page) . "' class='extend' title='跳转到最后一页'> 最后一页 </a>";}}
}
?>

参考CSS样式:

1
2
3
.page_navi{width:100%;height:20px;line-height:20px;text-align:left;overflow:hidden;padding-top:1em;}
.page_navi a{padding:1px 4px;margin:2px;text-decoration:none;color:#888;border:1px solid #ccf;}
.page_navi a:hover,.page_navi a.current{border:1px solid #356aa0;color:#356aa0;}

显示随机文章代码

前台呼叫語法:

1
<?php s_random_lists(); ?>

以下內容加入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
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
<?php
 
function s_random_lists($num_limit = 5 , $exclude = "" , $date_limit = "" , $echo = true , $list = true){
 
        $out = "";
 
        if ( $num_limit < 1 ) $num_limit = "-1";
 
        if ( !$date_limit_ts = strtotime($date_limit) ) $date_limit = false;
 
        if ( !$date_limit ){
 
            $posts = get_posts('offset=0&numberposts='.$num_limit.'&exclude='.$exclude.'&orderby=rand');
 
        } else {
 
            $posts = get_posts('offset=0&numberposts=-1&exclude='.$exclude.'&orderby=rand');
 
        }
 
        $postscount = count($posts);
 
        if ( $num_limit < 1 ) $num_limit = $postscount;
 
        if ( $postscount < $num_limit ) $num_limit = $postscount ;
 
        for ( $i = 0 ; $i < $num_limit ; $i++ ){
 
             if ( !$date_limit or $date_limit_ts < strtotime( $posts[$i]->post_date )){
 
                if ( $list ) $out.= '<li class="random-post-link">'."\n";
 
                  $out.= '<a href="'.get_permalink($posts[$i]->ID).'" title="'.$posts[$i]->post_title.'">'.$posts[$i]->post_title.'</a>'."\n";
 
                if ( $list ) $out.= '</li>'."\n";
 
            }else{
 
                if ( $postscount > $num_limit ) $num_limit++;
 
            }
 
        }
 
        if ( $list ) $out = '<ul class="random-post-link">'."\n".$out.'</ul>'."\n";
 
        if ( $echo ){
 
              echo $out;
 
        } else {
 
            return $out;
 
        }
 
    }
 
?>

$num_limit = 5 ,修改為要顯示的數量即可。

返回首页按钮平滑滚动特效代码

把这段代码放在footer.php里。。。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script type="text/javascript">
$(document).ready(function() {
    $('a[href*=#]').click(function() {
        if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
            var $target = $(this.hash);
            $target = $target.length && $target || $('[name=' + this.hash.slice(1) + ']');
            if ($target.length) {
                var targetOffset = $target.offset().top;
                $('html,body').animate({
                    scrollTop: targetOffset
                },
                1000);
                return false;
            }
        }
    });
});
</script><!-- jQuery 平滑滾動 -->

然后把这段代码放在相应位置

1
2
3
		<div id="top">
        <a href="#header" title="返回頁首">Top &Delta;</a>
		</div>

这个特效是我在一个博客里发现的,具体是谁给忘了,实在不好意思。但是我发现专业的主题在footer.php找不到这段代码,不知道他们是怎么弄的。代码跟域名一样,越短越好。

在single.php加上作者和版权信息

1
2
3
4
5
6
7
8
9
10
<div id="entry-author-info">
<div id="author-avatar">
<?php echo get_avatar( get_the_author_meta( 'user_email' ), apply_filters( 'twentyten_author_bio_avatar_size', 60 ) ); ?>
</div><!-- #author-avatar -->
<div id="copyright">
<p>作者:<a href="<?php echo $authordata->user_url; ?>" title="<?php echo $authordata->display_name;?>"><?php echo $authordata->display_name;?></a><br />
							原文链接:<a href="<?php echo get_permalink($post->ID);?>" title="<?php echo $post->post_title; ?>"><?php echo $post->post_title; ?></a><br />
							版权所有:<a href="<?php bloginfo('url');?>" title="<?php bloginfo('name');?>"><?php bloginfo('name');?></a>,转载请注明本文出处。<br />
</div>
</div>

参考CSS样式:

1
2
3
4
5
6
#entry-author-info{overflow:hidden; margin:10px 20px 10px 10px; padding:10px 30px 10px 30px; height: 100%;}
#entry-author-info #author-avatar{float: left; margin-top:10px;}
#entry-author-info #copyright{float: left;margin: 2px 0 0 10px; color: #AAA;}
#author-avatar img.avatar{box-shadow: 0 0 3px #2C2C2C; -moz-box-shadow: 0 0 3px #2C2C2C; -webkit-box-shadow: 0 0 3px #2C2C2C;}
#copyright a, #copyright a:visited{color:#1111CC; text-shadow:1px 1px 1px #999;}
#copyright a:hover{text-decoration:underline; text-shadow:1px 1px 1px #999;}

解决WordPress半角引号变成全角引号问题的方法

修改主题theme下的主题函数functions.php文件,在里面的头部加入下面的代码:

1
<?php remove_filter('the_content', 'wptexturize'); ?>

同样这些代码在W7C里都有记载。可能有更好更短的代码,俺还是初学者,只会信手拈来,希望高手们多多指教撒~~~

评论: 4

  1. #1

    你的博客主题怎么这样呢,不好看不说,用户体验也不好。打开以后,文章在最下面,反而上面留下了大片的空白。

    • 呵呵,居然有这么严重啊!谢谢你的意见。。。
      我看你用的是IE6.0,这个浏览器我都不用了,我经常用的是Firefox,不知道你的电脑分辨率多少,我这边1024*768的,用Firefox挺好的。。。

  2. #2

    你没前途了大哥

  3. 发表评论

    (required)