程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> WordPress模板文件結構超詳解

WordPress模板文件結構超詳解

編輯:PHP基礎知識
 

wordpress網站建設中,主題的制作是最為核心的環節。了解模板文件結構是模板制作的第一步,本文所講的模板文件結構包括兩部分,一是指以文件名為概念的文件結構,二是指文件內容的代碼結構。

一、如何使模板文件起作用

wordpress模板文件夾放置於/wp-content/themes/下,開發者只需將自己的模板文件全部置於一個文件夾中,將文件夾置於該目錄下,wordpress系統就會自動檢測,發現模板文件可用時就會在後台“主題”中列出該模板。

我們創建一個文件夾,命名為mytheme,在mytheme中創建兩個文件,分別是style.css,index.php,functions.php,用文本編輯器編輯這兩個文件。在style.css首置入如下代碼:

/*
Theme Name: utubon.com
Theme URI: http://www.utubon.com/
Description: zrq -wordpress
Author: frustigor
Version: 1.0
License:
License URI:
Tags:zrq
*/

保存即可。然後將mytheme文件夾放入到wordpress主題目錄中,進入後台查看,是否有了一個新的主題。

其實wordpress對主題的檢測緊限於style.css,index.php,有了這兩個文件和上面的聲明,即可在後台檢測到新的主題。現在開始你可以在index.php中寫網頁結構,在style.css中寫樣式,在functions.php中添加新的函數和功能了。

你會問,其他的主題中,為什麼會有這麼多文件呢,如sidebar.php,page.php,single.php,category.php等。wordpress使用模板通過函數的調用,讓模板之間形成完整的整體,例如在index.php中你會看到get_header()即調用文件名為header.php的模板文件, get_footer()亦然。get_template_part( ‘loop’, ‘index’ );則是調用模板loop-index.php。wordpress並非傻瓜的像include()函數一樣包含這些文件,而是對文件的存在與否要進行判斷,如果不存在該文件將用對應的相關文件代替,這需要你查看開發文檔中該函數的具體解釋。

二、一般情況下模板文件列表和對應的函數

我們查看所有的模板都會獲悉該主題所擁有的模板文件,一般情況下,模板文件擁有下面的這些文件,他們分別對應了自己的調用函數,一並列出:

文件名

一般作用

對應的函數

備注(使用技巧)

style.css

樣式表

<?php bloginfo( ‘stylesheet_url’ ); ?>調用地址

 

index.php

wordpress識別首頁

自動識別

 

functions.php

包含增函數和新功能

自動識別

 

header.php

頭部

get_header()

 

footer.php

尾部

get_footer()

 

sidebar.php

邊側欄

get_sidebar(‘foot’)(無參數則調用sidebar.php)

參數foot指文件sidebar-foot.php類推

loop.php

content.php

內容循環

get_template_part( ‘loop’, ‘index’ )和sidebar一樣

參數的意思是調用模板loop-index.php類推如果get_template_part( ‘content’,’single’ );

404.php,

search.php,

page.php,

single.php

分別是404頁,搜索頁,單獨頁面,文章內容頁

自動識別,和index.php一樣,使用上述函數,沒有該文件的話用index.php

 

archive.php,

category.php,

tag.php,

author.php

分別是歸檔頁,分類頁,標簽頁,作者頁

同上,但如果只有archive.php或category.php沒有其他頁,其他頁用archive.php代替或category.php代替

 

除了上面這些頁面之外,當然還會有主題特殊的文件,如主題自身的圖片,js代碼screenshot.png是主題預覽圖片,自動檢測並在後台顯示。上面沒有提到的文件不一定不存在,如loop-tag-cloud.php,你可以用get_template(‘loop’,’tag-cloud’)來調用,這是一類上述衍生文件。其他特殊文件如果沒有特定的說明或功能,也可用include()等php函數將其包含。上面的文件除了style.css,index.php都是可選文件,例如烏徒幫模板中沒有很多文件。

三、文件代碼結構:寫一個最簡單的模板

正如文章開頭提到,最簡單的模板就只有style.css和index.php這兩個文件,接下來就用這個最簡單的模板來講解模板文件代碼結構。如果你懂得html網頁設計,並對wordpress函數有一些了解,制作自己的模板並不困難,完全可以仿照別人的模板,慢慢完成自己的模板。

這裡強烈建議你采用標准的網頁設計方法,放棄table布局,認真學習css,采用div+css布局。

請先自己設計出html代碼(一個頁面,首頁),加入一些測試的文章、圖片、特效等,然後按照本文的方法進行修改。然後將所有代碼拷貝到index.php中,這時你甚至可以不用理會style.css。在index.php中,我給出的基本框架如下:

<html>
< head>
< title>zrq-wordpress</title>
< style type=”text/css” media=”screen”>
html { margin-top: 28px !important; }
* html body { margin-top: 28px !important; }
< /style>
< /head>
< body>
< div id=”wapper”>
< div id=”header”></div>
< div id=”container”>
< div id=”left”></div>
< div id=”right”></div>
< /div>
< div id=”footer”></div>
< /div>
< /body>
< /html>

上面的只是最基本的框架,通過css樣式控制頁面的寬度、呈現顏色、表現形式等。

我們將頭部定義到<div header>的地方,頭部中既包含了網頁的css、meta聲明,也包含了網頁頂部的一些元素,如導航條、logo、公告等。在頭部中,我們需要修改一些內容:

1、引入style.css:<link rel=”stylesheet” type=”text/css” media=”all” href=”<?php bloginfo( ‘stylesheet_url’ ); ?>” />
2、引入wordpress本身需要添加的代碼:
<?php
if ( is_singular() && get_option( ‘thread_comments’ ) )
wp_enqueue_script( ‘comment-reply’ );
wp_head();
?>
3、用下面的代碼替換<title>的內容,以顯示網頁標題
<?php
global $page, $paged;
wp_title( ‘|’, true, ‘right’ );
bloginfo( ‘name’ );
$site_description = get_bloginfo( ‘description’, ‘display’ );
if ( $site_description && ( is_home() || is_front_page() ) )
echo ” | $site_description”;
if ( $paged >= 2 || $page >= 2 )
echo ‘ | ‘ . sprintf( __( ‘Page %s’, ‘twentyten’ ), max( $paged, $page ) );
?>

以上是網站聲明部分,這些內容作為wordpress應該擁有的內容,最好不要缺少,當然你也可以根據自己的需要和想法替換為自己想要的內容。例如在wp_title()後面添加echo ‘你想要添加的內容’;從而增加你的網頁標題的信息。

4、修改你的<div header>的內容,導航可以使用wordpress後台菜單用wp_nav_menu()函數來實現,要想使用該功能,還需要在functions.php中預先初始化主題,讓主題支持後台菜單功能。或用分類列表代替用wp_list_categories()函數來實現,這些函數需要你慢慢學習他們的使用方法。

接下來是內容的部分,我們將文章在首頁的呈現列表放在<div left>中,用下面的代碼來實現文章列表的呈現。

<?php while(has_posts()) : the_post(); ?>
< div id=”post”>
< div id=”post-title”><a href=”<?php the_permalink(); ?>”><?php the_title(); ?></a></div>
< div id=”post-content”><?php the_content(); ?></div>
< /div>
< ?php endwhile; ?>

以上是最最簡單的文章循環了,將列出對應條數的最新文章標題和內容。作為開發者,你需要根據自己的想象和需要,結合js效果、css樣式,實現自己最終想要的結果。

接下來是sidebar,我們將sidebar放在<div right>中,使用下面這段代碼,實現在後台放置widget:

    <?php if(is_active_sidebar(‘sidebar-widget-area-primary’)): ?>
< div id=”primary”>
< ?php dynamic_sidebar( ‘sidebar-widget-area-primary’ ); ?>
< /div><!–//end of primary–>
< ?php endif; // end primary widget area ?>

不過目前這還是無法實現的,我們需要在functions.php中定義一個widget,這樣才能實現後台小工具的使用,並在這裡表現出來。

網頁footer尾部可以由你自由發揮,等你慢慢熟練了wordpress模板的寫作之後,可以實現很多調用和特效,例如在底部放入友情鏈接等。  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved