我的主题代码小记
最近在制作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 Δ</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里都有记载。可能有更好更短的代码,俺还是初学者,只会信手拈来,希望高手们多多指教撒~~~
绍兴seo
2010/09/08 16:15你的博客主题怎么这样呢,不好看不说,用户体验也不好。打开以后,文章在最下面,反而上面留下了大片的空白。
皇家元林
2010/09/08 17:50呵呵,居然有这么严重啊!谢谢你的意见。。。
我看你用的是IE6.0,这个浏览器我都不用了,我经常用的是Firefox,不知道你的电脑分辨率多少,我这边1024*768的,用Firefox挺好的。。。
风吟
2010/09/08 21:41你没前途了大哥
皇家元林
2010/09/09 07:40你会算命?