小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

夢開始的地方 ? Blog Archive ? wordpress模板各文件函數(shù)解析

 輕心 2009-10-08

標題:wordpress模板各文件函數(shù)解析 瀏覽:166

時間:2009年05月25日 (10:47 上午)

分類:互聯(lián)網(wǎng)

標簽: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首先會尋找以下九種基本頁面:

首頁
如果WordPress判斷是在首頁上,會先調(diào)用“home.php”文件然后再調(diào)用“index.php”。

日志頁
如果是(單篇)日志頁,首先調(diào)用“single.php”然后默認調(diào)用“index.php”。

“頁面”頁
如果是靜態(tài)頁面或“頁面型”頁面(應(yīng)用了模板的頁面),WordPress首先調(diào)用“pagetemplate.php”然后默認調(diào)用“index.php”。

“分類”頁
如果WordPress判斷是分類頁,則首先調(diào)用該類別編號的頁面,例如“category-7.php”。 找不到相應(yīng)文件時可以查找“category.php”(category.php可以用于所有類別頁)。 如果沒有“category.php”則繼續(xù)查找“archive.php”,最后默認調(diào)用“index.php”。

標簽頁
如果WordPress判斷是標簽頁,會首先加載“tag-slug.php”文件,以具體的slug(別名)為標簽名。 如果標簽是“wordpress hacks”,那么標簽別名頁就是“tag-wordpress-hacks.php”。 如果加載不成,WP會繼續(xù)查找“tag.php”文件,該文件可用于所有標簽頁,然后調(diào)用“archive.php”,最后默認調(diào)用 “index.php”。

作者頁
博客擁有多個作者時,WP會首先尋找“author.php”文件以顯示作者詳情。 如果沒有“author.php”則繼續(xù)查找“archive.php”,最后默認調(diào)用“index.php”。

存檔頁
WP為之前的日志加載信息頁面時,同時也加載了存檔頁。 WP首先加載“date.php”,其次“archive.php”,最后默認加載“index.php”。

搜索頁或404頁
若WP判斷是在搜索結(jié)果頁或404(頁面未找到)頁,會嘗試加載search.php或404.php文件。 如果無法加載search.php或404.php,WP仍然默認加載“index.php”。

附件頁
附件頁是所有WordPress主題模板頁面中使用次數(shù)最少的一種頁面類型。 WordPress通常用這些特殊的附件頁來加載若干信息,這些信息解釋首先查找“image.php”, “audio.php”, “video.php”, 以及“application.php”的原因。 然后WP查找“attachment.php”或“single.php”,如果這兩個文件不可用,默認查找“index.php”。

WP主題模板內(nèi)部運行情況
可以用單獨的index.php文件來調(diào)用以上九種類型的頁面,這在上面也提到過。 也可以在一些條件標簽中編寫代碼,我在這篇文章的結(jié)尾部分會告訴大家如何操作。 一個頁面中可能含有很多代碼,有時甚至有些混亂,這樣我們要修改代碼來進行設(shè)計就不太方便了。

不過湊巧的是,就像WordPress查找九種基本頁面一樣,每個主題模板頁面也包含九種基本的WordPress元素:

調(diào)用頁眉
開啟the loop(主循環(huán))
調(diào)用永久鏈接與(若干)meta
用以通知WordPress應(yīng)獲取的信息的調(diào)用
用以獲取獲取文章內(nèi)容或摘要的調(diào)用
(可能有)更多的meta
關(guān)閉the loop(主循環(huán))
調(diào)用側(cè)邊欄
調(diào)用頁腳
這是WordPress元素,能讓這些元素運行的PHP代碼分布在不同的地方,讓你的主題版面和平面設(shè)計保持正常工作。 下面我要詳細介紹一下這些元素,以便大家進一步了解如何設(shè)計主題模板頁面。

調(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(); ?>”>
<h2><a href=”<?php the_permalink() ?>” rel=”bookmark”><?php the_title(); ?></a></h2>
</div>

用以通知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 : ?>
<?php endif; ?>

這是一個多行代碼,你可以在其中添加其它信息,例如“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樣式表可以放在其他文件;
index.php : 主頁模板,不可缺少;
archive.php : Archive/Category模板,如果缺少,默認為index.php的顯示;
404.php : Not Found 錯誤頁模板,如果缺少,默認為index.php的顯示;
comments.php : 留言/回復(fù)模板,不可缺少;
footer.php : Footer模板,可合并到index.php;
header.php : Header模板,可合并到index.php;
sidebar.php : 側(cè)欄模板,可合并到index.php;
page.php : 內(nèi)容頁(Page)模板,如果缺少,默認為index.php的顯示;
single.php : 內(nèi)容頁(Post)模板,如果缺少,默認為index.php的顯示;
searchform.php : 搜索表單模板,可合并到index.php;
search.php : 搜索結(jié)果模板,如果缺少,默認為index.php的顯示;

(二)基本條件判斷Tag

is_home() : 是否為主頁
is_single() : 是否為內(nèi)容頁(Post)
is_page() : 是否為內(nèi)容頁(Page)
is_category() : 是否為Category/Archive頁
is_tag() : 是否為Tag存檔頁
is_date() : 是否為指定日期存檔頁
is_year() : 是否為指定年份存檔頁
is_month() : 是否為指定月份存檔頁
is_day() : 是否為指定日存檔頁
is_time() : 是否為指定時間存檔頁
is_archive() : 是否為存檔頁
is_search() : 是否為搜索結(jié)果頁
is_404() : 是否為 “HTTP 404: Not Found” 錯誤頁
is_paged() : 主頁/Category/Archive頁是否以多頁顯示
(三)Header部分常用到的PHP函數(shù)

<?php bloginfo(’name’); ?> : 博客名稱(Title)
<?php bloginfo(’stylesheet_url’); ?> : CSS文件路徑
<?php bloginfo(’pingback_url’); ?> : PingBack Url
<?php bloginfo(’template_url’); ?> : 模板文件路徑
<?php bloginfo(’version’); ?> : WordPress版本
<?php bloginfo(’atom_url’); ?> : Atom Url
<?php bloginfo(’rss2_url’); ?> : RSS 2.o Url
<?php bloginfo(’url’); ?> : 博客 Url
<?php bloginfo(’html_type’); ?> : 博客網(wǎng)頁Html類型
<?php bloginfo(’charset’); ?> : 博客網(wǎng)頁編碼
<?php bloginfo(’description’); ?> : 博客描述
<?php wp_title(); ?> : 特定內(nèi)容頁(Post/Page)的標題
(四)模板常用的PHP函數(shù)及命令

<?php get_header(); ?> : 調(diào)用Header模板
<?php get_sidebar(); ?> : 調(diào)用Sidebar模板
<?php get_footer(); ?> : 調(diào)用Footer模板
<?php the_content(); ?> : 顯示內(nèi)容(Post/Page)
<?php if(have_posts()) : ?> : 檢查是否存在Post/Page
<?php while(have_posts()) : the_post(); ?> : 如果存在Post/Page則予以顯示
<?php endwhile; ?> : While 結(jié)束
<?php endif; ?> : If 結(jié)束
<?php the_time(’字符串’) ?> : 顯示時間,時間格式由“字符串”參數(shù)決定,具體參考PHP手冊
<?php comments_popup_link(); ?> : 正文中的留言鏈接。如果使用 comments_popup_script() ,則留言會在新窗口中打開,反之,則在當前窗口打開
<?php the_title(); ?> : 內(nèi)容頁(Post/Page)標題
<?php the_permalink() ?> : 內(nèi)容頁(Post/Page) Url
<?php the_category(’,’) ?> : 特定內(nèi)容頁(Post/Page)所屬Category
<?php the_author(); ?> : 作者
<?php the_ID(); ?> : 特定內(nèi)容頁(Post/Page) ID
<?php edit_post_link(); ?> : 如果用戶已登錄并具有權(quán)限,顯示編輯鏈接
<?php get_links_list(); ?> : 顯示Blogroll中的鏈接
<?php comments_template(); ?> : 調(diào)用留言/回復(fù)模板
<?php wp_list_pages(); ?> : 顯示Page列表
<?php wp_list_categories(); ?> : 顯示Categories列表
<?php next_post_link(’%link’); ?> : 下一篇文章鏈接
<?php previous_post_link(’%link’); ?> : 上一篇文章鏈接
<?php get_calendar(); ?> : 日歷
<?php wp_get_archives() ?> : 顯示內(nèi)容存檔
<?php posts_nav_link(); ?> : 導(dǎo)航,顯示上一篇/下一篇文章鏈接
<?php include(TEMPLATEPATH . ‘/文件名’); ?> : 嵌入其他文件,可為定制的模板或其他類型文件
(五)與模板相關(guān)的其他函數(shù)

<?php the_search_query(); ?> 搜索表單的值
<?php _e(’Message’); ?> : 輸出相應(yīng)信息
<?php wp_register(); ?> : 顯示注冊鏈接
<?php wp_loginout(); ?> : 顯示登錄/注銷鏈接
<?php wp_meta(); ?> 顯示管理員的相關(guān)控制信息(為插件API HOOK用)
<!–next page–> : 將當前內(nèi)容分頁
<!–more–> : 將當前內(nèi)容截斷,以不在主頁/目錄頁顯示全部內(nèi)容
<?php timer_stop(1); ?> : 網(wǎng)頁加載時間(秒)
<?php echo get_num_queries(); ?> : 網(wǎng)頁加載查詢量
 

顯示最新文章

<?php query_posts(’showposts=5′); ?>
<ul>
<?php while (have_posts()) : the_post(); ?>
<li><a href=”<?php the_permalink() ?>”><?php the_title(); ?></a></li>
<?php endwhile;?>
</ul>

顯示最新評論

<?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) { ?>
<li><a href=”<?php echo get_permalink($postid); ?>” title=”<?php echo $title ?>”><?php echo $title ?></a></li>
<?php } } ?>

顯示文章分類

<h2>Categories</h2>
<ul><?php wp_list_cats(’sort_column=name’); ?></ul>

顯示歸檔

<h2>Archives</h2>
<ul><?php wp_get_archives(’type=monthly’); ?></ul>

在側(cè)欄顯示頁面列表

<h2>Pages</h2>
<ul><?php wp_list_pages(’title_li=’); ?></ul>

調(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(); ?>
<li><?php wp_loginout(); ?></li>
<li><a href=”http://www./”>WordPress</a></li>
<?php wp_meta(); ?>
<li><a href=”http://validator./check?uri=referer”>XHTML</a></li>
</ul>

在側(cè)欄顯示頁面的子頁面

<?php$children = wp_list_pages(’title_li=&child_of=’.$post->ID.’&echo=0′);if ($children) { ?>
<ul><?php echo $children; ?></ul>
<?php } ?>

顯示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é)論
只要掌握了一點這方面的知識,你就可以隨意修改任何WordPress主題模板頁面了。 現(xiàn)在你已經(jīng)充分了解了WordPress的頁面和the loop的運行,就可以征服任何難題了。 現(xiàn)在就開始你的博客主題設(shè)計之旅吧!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多