標題:wordpress模板各文件函數(shù)解析 瀏覽:166 時間:2009年05月25日 (10:47 上午) 標簽:Wordpress 作者:shine 評論:沒有評論
修改主題時發(fā)現(xiàn)好多WordPress主題函數(shù)都不了解,因此網(wǎng)上摘抄了一份放在自己博客上,便于以后好找。 在WordPress中如何按你的意愿顯示頁面,關(guān)鍵看你是否了解WordPress主題模板頁面。 這里所說的主題文件是指顯示頁面的主題文件,而非實現(xiàn)評論、側(cè)邊欄等功能的主題文件。大多數(shù)用戶不使用WordPress安裝時自帶的默認主題,他們會在 互聯(lián)網(wǎng)上下載免費主題。 這是一種設(shè)計博客版式的好方法,但不是所有主題開發(fā)者都用相同的方式編寫主題。 主題的表現(xiàn)很大程度上取決于開發(fā)者用在主題上的開發(fā)時間和對WordPress的了解。 下面我會為大家介紹設(shè)計主題頁面的所有相關(guān)知識,通過這些下面的信息你甚至可以開始為自己設(shè)計一個主題。 除非你是專家級的主題開發(fā)者,否則都可以從這里學到些新的東西。 WordPress如何工作 首先需要了解的是WordPress的模板層級,或者說是“WordPress調(diào)用頁面的順序”。 “index.php”是唯一一個所有WordPress主題的PHP文件中都必須具備的文件。“index.php”可以執(zhí)行WordPress的所有單獨功能。 每當有WordPress頁面被調(diào)用時,WordPress的“引擎”會判斷(通過排除法)頁面的類型。 這類似于詢問“我在哪兒?”。 WordPress回答“我在…類型的頁面上”,然后以特定順序調(diào)用頁面。 WordPress找不到需要的PHP文件時,會使用“index.php”文件來代替所需文件。 WordPress首先會尋找以下九種基本頁面: 首頁 日志頁 “頁面”頁 “分類”頁 標簽頁 作者頁 存檔頁 搜索頁或404頁 附件頁 WP主題模板內(nèi)部運行情況 不過湊巧的是,就像WordPress查找九種基本頁面一樣,每個主題模板頁面也包含九種基本的WordPress元素: 調(diào)用頁眉 調(diào)用頁眉,側(cè)邊欄以及頁腳 這三種元素基本類似。 當你在模板中看到以下代碼: <?php get_header(); ?> 表明WordPress打開了“header.php”文件。 get_sidebar() (sidebar.php) 和 get_footer() (footer.php)也是同樣的道理。 你可能會有很多頁眉、頁腳和側(cè)邊欄,這時可以點擊上面的“條件標簽”查看相關(guān)內(nèi)容。 開啟the loop(主循環(huán)) “Wordpress Loop”會在數(shù)據(jù)庫中持續(xù)調(diào)用文件,直到WordPress終止調(diào)用。 “the loop”的結(jié)構(gòu)隨顯示頁面類型而變,WordPress嘗試加載的每個基本類型頁面都有一個“loop”。 下面是開啟the loop的代碼: <?php if ( have_posts() ) : <?php if ( have_posts() ) : the_post(); ?> 我們可以看到,代碼被拆分開來,have_posts用以定義條件標簽,while和the_post則各成一部分,但這仍然是the loop,在所有頁面中基本都是這樣。 多行l(wèi)oop時的一個用法是:用query_posts在“if have_posts”和代碼的剩余部分之間放置一個參數(shù),用來顯示單篇文章、某一時段的文章、最近一篇文章或者某一類別中的文章,也可以改變the loop中迭代文章的順序。 調(diào)用永久鏈接與(若干)meta 通過the loop的每次迭代,開放The loop的最后部分(the_post)能夠激活元素數(shù)據(jù)。 這里的個體數(shù)據(jù)通常是指“post meta”, 尤其是永久鏈接(URL)、標題、時間這樣的meta。大多數(shù)主題會在單篇文章內(nèi)容前顯示一些信息,然后在文章內(nèi)容后也顯示一些信息——比如文章類別和標 簽。 下面是一些你可以在post meta中調(diào)用的內(nèi)容: the_permalink, the_ID, the_title, the_time, the_author, the_author_email, the_author_posts_link, the_category, single_cat_title, the_tags, single_tag_titls, edit_post_link, comments_popup_link, comments_rss_link 下面是Post meta的代碼示例: <div class=”post” id=”post-<?php the_ID(); ?>”> 用以通知WordPress應(yīng)獲取的信息的調(diào)用 之后WordPress會決定所顯示的單篇文章內(nèi)容的詳細程度。 文章詳細程度取決于你的主題使用的是“the_content”(顯示全文)或“the_excerpt”(顯示摘要)。 (可能有)更多的meta 上面提到過,文章下方都有指定的類別或標簽,有時你還可能看到“edit”鏈接。 一些主題甚至在文章內(nèi)容后添加了date published meta。 關(guān)閉the loop(主循環(huán)) 代碼如下: <?php else : ?> 這是一個多行代碼,你可以在其中添加其它信息,例如“Sorry, we didn’t find anything”。 你可以在側(cè)邊欄之后、調(diào)用側(cè)邊欄和頁腳之前找到“next”“previous”導(dǎo)航鏈接。 Loops 大多數(shù)loops與我在上面所舉的例子都差不多,但這并不表示你不能隨意修改這些loops。 推薦大家閱讀WP Codex上的文章The Loop in Action,文章中列舉了存檔、類別以及單篇文章以及靜態(tài)首頁中的the loop。 WP Codex上the loop中也有一些在同一頁面上放置多個loop的示例。 Perishable Press上有一篇關(guān)于多l(xiāng)oop,多欄內(nèi)容的精彩教程。 Perishable Press上還有一些很好的loop模板,以及一篇關(guān)于兩欄水平序列文章的教程。 (一)WordPress基本模板文件,一套完整的WordPress模板包括如下文件,但是只有index.php和style.css是不能缺少的: style.css : CSS(樣式表)文件,不可缺少版權(quán)部分,真正CSS樣式表可以放在其他文件; (二)基本條件判斷Tag is_home() : 是否為主頁 <?php bloginfo(’name’); ?> : 博客名稱(Title) <?php get_header(); ?> : 調(diào)用Header模板 <?php the_search_query(); ?> 搜索表單的值 顯示最新文章 <?php query_posts(’showposts=5′); ?> 顯示最新評論 <?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; $output .= “\n<ul>”; 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 .= “\n</ul>”; $output .= $post_HTML; echo $output;?> 顯示熱評文章 <?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) { ?> 顯示文章分類 <h2>Categories</h2> 顯示歸檔 <h2>Archives</h2> 在側(cè)欄顯示頁面列表 <h2>Pages</h2> 調(diào)用Gravatar(只適應(yīng)2.5以上) <?php if(function_exists(’get_avatar’)){ echo get_avatar($comment, ‘50?);} ?> 顯示友情鏈接 <ul><?php get_links_list(); ?></ul> 顯示管理員鏈接 <ul><?php wp_register(); ?> 在側(cè)欄顯示頁面的子頁面 <?php$children = wp_list_pages(’title_li=&child_of=’.$post->ID.’&echo=0′);if ($children) { ?> 顯示W(wǎng)ordpress標簽 <?php the_tags(); ?> 顯示W(wǎng)ordpress標簽云 <?php wp_tag_cloud(’smallest=8&largest=36&’); ?> 模板標題 <?php /* Template Name: Portfolio */ ?> 動態(tài)標題標簽 <title><?phpif (is_home()) { echo bloginfo(’name’); } elseif (is_404()) { echo ‘404 Not Found’; } elseif (is_category()) { echo ‘Category:’; wp_title(”); } elseif (is_search()) { echo ‘Search Results’; } elseif ( is_day() || is_month() || is_year() ) { echo ‘Archives:’; wp_title(”); } else { echo wp_title(”); } ?></title> 在獨立頁面中運行PHP <?php if ( is_home() ) { include (’file.php’); } ?> 結(jié)論 |
|