Wordpress 常用代码解释
1. 最新文章
Wordpress最新文章的调用可以使用一行很简单的模板标签 wp_get_archvies来 实现. 代码如下: <?php get_archives('postbypost', 10); ?> (显示 10篇最新更新文章) 或 <?php wp_get_archives('type=postbypost&limit=20&format=custom'); ?> 后面这个代码显示你博客中最新的 20篇文章,其中 format=custom这里主要用 来自定义这份文章列表的显示样式。具体的参数和使用方法你可以参考官方的使 用说明- wp_get_archvies。(fromat=custom也可以不要,默认以 UL列表显示 文章标题。) 补充: 通过 WP的query_posts()函数也能调用最新文章列表, 虽然代码会比较 多一点,但可以更好的控制 Loop的显示,比如你可以设置是否显示摘要。具体 的使用方法也可以查看官方的说明。 2. 随机文章 <?php $rand_posts = get_posts('numberposts=10&orderby=rand'); foreach( $rand_posts as $post ) : ?> <!--下面是你想自定义的 Loop--> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endforeach; ?> 补充: 上面提到的query_posts同样可以生成随机文章列表。 3. 最新留言 下面是我之前在一个 Wordpress主题中代到的最新留言代码,具体也记不得是哪 个主题了。该代码直接调用数据库显示一份最新留言。其中LIMIT 10限制留言 显示数量。绿色部份则是每条留言的输出样式。 <?php global $wpdb; $sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,comment_author_url, SUBSTRING(comment_content,1,30) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) WHERE comment_approved = '1' AND comment_type = '' AND post_password = '' ORDER BY comment_date_gmt DESC LIMIT 10"; $comments = $wpdb->get_results($sql); $output = $pre_HTML; foreach ($comments as $comment) { $output .= "\n<li>".strip_tags($comment->comment_author) .":" . " <a href=\"" . get_permalink($comment->ID) . "#comment-" . $comment->comment_ID . "\" title=\"on " . $comment->post_title . "\">" . strip_tags($comment->com_excerpt) ."</a></li>"; } $output .= $post_HTML; echo $output;?>
2.调用 TAB 页签菜单:
添加 head 头文件:判断后调用 js文件 <?php if ( is_home() ){ ?> <script type="text/javascript" src="<?php bloginfo('template_url'); ?>/tab/easytabs.js"></script> <?php } else { ?> <script type="text/javascript" src="<?php bloginfo('template_url'); ?>/tab/easytabs1.js"></script> <?php } ?> 添加 css 代码到 样式文件内 l <!--tab 页签css--> l #tab{ l text-align:left; l position:relative; l } l .menu { l background-color:#ececec; l color:#272727; l border-bottom:1px solid #d7d7d7; l height:23px; l width:450px; l vertical-align:middle; l } l .menu ul { l margin:0px; l padding:0px; l list-style:none; l text-align:left; l } l .menu li {display:inline; l line-height:23px;} l l .menu li a {color:#000000; l text-decoration:none; l padding:4px 5px 6px 5px; border-left:1px solid #ececec; l border-right:1px solid #ececec; l } l .menu li a.tabactive {border-left:1px solid #d7d7d7; l border-right:1px solid #d7d7d7; l background-color:#CCCCCC; l font-weight:bold; l position:relative;} l l #tabcontent1,#tabcontent2,#tabcontent3,#tabcontent4 { l border:1px solid #ececec; l width:450px; l text-align:left; l padding:6px 0px; l font-size:12px; l margin:2px 0 5px 5px; l } l l l #container1 #newcomment,#container #newcomment{ l l position: relative; l margin-left:30px; l width:350px; l } l l #container1 #reping,#tabcontent1 #reping{ l position: relative; l margin-left:30px; l width:350px; l } l l #container1 #rand li, #tabcontent2 #rand li{ l margin-left:30px; l padding:0; l } l l <!--tab 页签css--> 添加 tab代码到需要调用的地方 <div id="tab"><h2>最新关注日志及评论</h2> <!--Start of the Tabmenu 1 --> <div class="menu"> <ul> <li><a href="#" onmouseover="easytabs('1', '1');" onfocus="easytabs('1', '1');" onclick="return false;" title="" id="tablink1">最新评论</a></li> <li><a href="#" onmouseover="easytabs('1', '2');" onfocus="easytabs('1', '2');" onclick="return false;" title="" id="tablink2">最受关注文章</a></li> <li><a href="#" onmouseover="easytabs('1', '3');" onfocus="easytabs('1', '3');" onclick="return false;" title="" id="tablink3">随机文章</a></li> </ul> </div> <!--Start Tabcontent 1 --> <div id="tabcontent1"> <div id="newcomment"> <?php global $wpdb; $sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,comment_author_url,SUBSTRING(comment_content,1,30) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) WHERE comment_approved = '1' AND comment_type = '' AND post_password = '' ORDER BY comment_date_gmt DESC LIMIT 10"; $comments = $wpdb->get_results($sql); $output = $pre_HTML; foreach ($comments as $comment) { $output .= "\n<li>".strip_tags($comment->comment_author).":" . "<a href=\"" . get_permalink($comment->ID). "#comment-" . $comment->comment_ID . "\" title=\"on " . $comment->post_title . "\">" . strip_tags($comment->com_excerpt)."</a></li>"; } $output .= $post_HTML; echo $output;?> </div> </div> <!--Start Tabcontent 2--> <div id="tabcontent2"> <div id="reping"> <?php $result = $wpdb->get_results("SELECT comment_count,ID,post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , 10"); foreach ($result as $topten) { $postid = $topten->ID; $title = $topten->post_title; $commentcount = $topten->comment_count; if ($commentcount != 0) { ?> <li><a href="<?php echo get_permalink($postid); ?>" title="<?php echo $title ?>"><?php echo $title ?></a></li> <?php } } ?> </div> </div> <!--End Tabcontent 2 --> <!--Start Tabcontent 3--> <div id="tabcontent3"> <div id="rand"> <?php $rand_posts = get_posts('numberposts=10&orderby=rand'); foreach( $rand_posts as $post ) : ?> <!--下面是你想自定义的 Loop--> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endforeach; ?> </div> </div><br/><br/> </div> 保存 js代码到目录下 /* EASY TABS 1.2 Produced and Copyright by Koller Juergen www.kollermedia.at | www.austria-media.at Need Help? http:/www.kollermedia.at/archive/2007/07/10/easy-tabs-12-now-with-autochange You can use this Script for private and commercial Projects, but just leave the two credit lines, thank you.*/ //EASY TABS 1.2 - MENU SETTINGS //Set the id names of your tablink (without a number at the end)设置链接的tab页签名称 var tablink_idname = new Array("tablink") //Set the id name of your tabcontentarea (without a number at the end)设置tab内容区域id名称 var tabcontent_idname = new Array("tabcontent") //Set the number of your tabs//设置tab的个数 var tabcount = new Array("2") //Set the Tab wich should load at start (In this Example:Tab 2 visible on load) var loadtabs = new Array("1") //Set the Number of the Menu which should autochange (if you dont't want to have a change menu set it to 0) var autochangemenu = 0; //the speed in seconds when the tabs should change var changespeed = 3; //should the autochange stop if the user hover over a tab from the autochangemenu? 0=no 1=yes var stoponhover = 0; //END MENU SETTINGS /*Swich EasyTabs Functions - no need to edit something here*/ function easytabs(menunr, active) {if (menunr == autochangemenu){currenttab=active;}if ((menunr == autochangemenu)&&(stoponhover==1)) {stop_autochange()} else if ((menunr == autochangemenu)&&(stoponhover==0)) {counter=0;}menunr = menunr-1;for (i=1; i <= tabcount[menunr]; i++){document.getElementById(tablink_idname[menunr]+i).className='tab'+i;document.getEleme ntById(tabcontent_idname[menunr]+i).style.display = 'none';}document.getElementById(tablink_idname[menunr]+active).className='tab'+active+' tabactive';document.getElementById(tabcontent_idname[menunr]+active).style.display = 'block';}var timer; counter=0; var totaltabs=tabcount[autochangemenu-1];var currenttab=loadtabs[autochangemenu-1];function start_autochange(){counter=counter+1;timer=setTimeout("start_autochange()",1000);if (counter == changespeed+1) {currenttab++;if (currenttab>totaltabs) {currenttab=1}easytabs(autochangemenu,currenttab);restart_autochange();}}function restart_autochange(){clearTimeout(timer);counter=0;start_autochange();}function stop_autochange(){clearTimeout(timer);counter=0;} window.onload=function(){ var menucount=loadtabs.length; var a = 0; var b = 1; do {easytabs(b, loadtabs[a]); a++; b++;}while (b<=menucount); if (autochangemenu!=0){start_autochange();} }
3.所有页面的归档
function BX_archive(){ global $month, $wpdb; $now = current_time('mysql'); $arcresults = $wpdb->get_results("SELECT DISTINCT YEAR(post_date) AS year, MONTH(post_date) AS month, count(ID) as posts FROM " . $wpdb->posts . " WHERE post_date <'" . $now . "' AND post_status='publish' AND post_type='post' AND post_password='' GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC"); if ($arcresults) { foreach ($arcresults as $arcresult) { $url = get_month_link($arcresult->year, $arcresult->month); $text = sprintf('%s %d', $month[zeroise($arcresult->month,2)], $arcresult->year); echo get_archives_link($url, $text, '','<h3>','</h3>'); $thismonth = zeroise($arcresult->month,2); $thisyear = $arcresult->year; $arcresults2 = $wpdb->get_results("SELECT ID, post_date, post_title, comment_status FROM " . $wpdb->posts . " WHERE post_date LIKE '$thisyear-$thismonth-%' AND post_status='publish' AND post_type='post' AND post_password='' ORDER BY post_date DESC"); if ($arcresults2) { echo "<ul class=\"postspermonth\">\n"; foreach ($arcresults2 as $arcresult2) { if ($arcresult2->post_date != '0000-00-00 00:00:00') { $url = get_permalink($arcresult2->ID); $arc_title = $arcresult2->post_title; if ($arc_title) $text = strip_tags($arc_title); else $text = $arcresult2->ID; echo "<li>".get_archives_link($url, $text, ''); $comments = mysql_query("SELECT * FROM " . $wpdb->comments . " WHERE comment_approved='1' and comment_post_ID=" . $arcresult2->ID); $comments_count = mysql_num_rows($comments); if ($arcresult2->comment_status == "open" OR $comments_count > 0) echo ' ('.$comments_count.')'; echo "</li>\n"; } } echo "</ul>\n"; } } }}