我的主题代码小记

14年前 4

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

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

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

/* 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 = '
    

' . trim(get_comment($parent_id)->comment_author) . ', 您好!

您曾在《' . get_the_title($comment->comment_post_ID) . '》的留言:
' . trim(get_comment($parent_id)->comment_content) . '

' . trim($comment->comment_author) . ' 給您的回應:
' . trim($comment->comment_content) . '

您可以點擊 查看回應完整內容

歡迎再度光臨 ' . get_option('blogname') . '

(此郵件由系統自動發出, 請勿回覆.)

'; $from = "From: "" . get_option('blogname') . "" <$wp_email>"; $headers = "$fromnContent-Type: text/html; charset=" . get_option('blog_charset') . "n"; wp_mail( $to, $subject, $message, $headers ); //echo 'mail to ', $to, '
' , $subject, $message; // for testing } } add_action('comment_post', 'comment_mail_notify'); /* 自動加勾選欄 */ function add_checkbox() { echo ''; } add_action('comment_form', 'add_checkbox'); // -- END ----------------------------------------

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

解决WordPress分页标题重复问题

<?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'); } ?>

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

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

/* 标签彩色显示代码开始 */
function colorCloud($text) {
$text = preg_replace_callback('||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 "";
}
add_filter('wp_tag_cloud', 'colorCloud', 1);
/* 标签彩色显示代码结束 */

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

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

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刊, 回忆, 笔记, 工作, 生活, 影片, 杂谈, 翻墙, 自由";
}
?>
	
	

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

社会标签:分享按钮代码

                
分享到: 分享到新浪微博 分享到做啥 推荐到鲜果 使用Live分享或收藏此文 收藏到QQ书签 添加到百度搜藏 使用谷歌分享或收藏此文 分享到人人 转帖到开心网

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

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

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

max_num_pages;}
        if($max_page > 1){if(!$paged){$paged = 1;}
        if($paged != 1){echo " 返回首页 ";}
        previous_posts_link(' 上一页 ');
    if($max_page > $range){
                if($paged < $range){for($i = 1; $i <= ($range + 1); $i++){echo "$i";}}
    elseif($paged >= ($max_page - ceil(($range/2)))){
                for($i = $max_page - $range; $i <= $max_page; $i++){echo "$i";}}
        elseif($paged >= $range && $paged < ($max_page - ceil(($range/2)))){
                for($i = ($paged - ceil($range/2)); $i <= ($paged + ceil(($range/2))); $i++){echo "$i";}}}
    else{for($i = 1; $i <= $max_page; $i++){echo "$i";}}
        next_posts_link(' 下一页 ');
    if($paged != $max_page){echo " 最后一页 ";}}
}
?>

参考CSS样式:

.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;}

显示随机文章代码

前台呼叫語法:


以下內容加入functions.php

post_date )){

                if ( $list ) $out.= '
  • '."n"; $out.= ''.$posts[$i]->post_title.''."n"; if ( $list ) $out.= '
  • '."n"; }else{ if ( $postscount > $num_limit ) $num_limit++; } } if ( $list ) $out = '
      '."n".$out.'
    '."n"; if ( $echo ){ echo $out; } else { return $out; } } ?>

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

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

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

    
    

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

    		
    

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

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

    参考CSS样式:

    #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文件,在里面的头部加入下面的代码:

    
    

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

    4 条评论

    1. #1

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

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

    2. #2

      你没前途了大哥