WordPress的代碼規范
WordPress一直致力于幫助用戶維護一個統一的代碼風格,使代碼保持簡潔、容易閱讀。所以,不論是在編寫 WordPress 核心代碼、插件還是主題的時候,都請根據WordPress規則并以人類的眼光來審視和編寫代碼,以下幾點是尤其需要注意的。
HTML代碼
一般HTML代碼語法正確性驗證可以在W3C校驗。
自閉合標簽
自閉合標簽的斜桿前應該要有一個空格,如正確的換行符應該是?<br />
,<br/>
這是不正確的。
屬性和標簽
所有屬性和標簽都應該是英文小寫,因為這些內容是給機器解析的,并不需要視覺上的可讀性。但其中的數據應該是人性化的,易于人類閱讀和理解的。如:
面向機器的代碼:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
面向人類的代碼:
<a href="http://www.dmeng.net/" title="這里應該有鏈接描述">Dmeng.net</a>
而且屬性內容應該用英文單引號或雙引號包括起來,如:
正確的屬性寫法:
<input type="text" name="email" disabled="disabled" />
<input type='text' name='email' disabled='disabled' />
錯誤的寫法:
<input type=text name=email disabled>
正確的縮進
使用正確的縮進可以有效提高代碼的視覺上的可讀性,即使是PHP和HTML混寫的時候,如:
正確的人類的寫法:
1 |
<?php if ( ! have_posts() ) : ?> |
2 |
??? <div id= "post-1" class = "post" > |
3 |
???? ? <h1 class = "entry-title" >Not Found</h1> |
4 |
?????? <div class = "entry-content" > |
5 |
????????? <p>Apologies, but no results were found.</p> |
6 |
????????? <?php get_search_form(); ?> |
7 |
?????? </div> |
8 |
??? </div> |
9 |
<?php endif ; ?> |
錯誤的寫法:
1 |
<?php if ( ! have_posts() ) : ?> |
2 |
??? <div id= "post-1" class = "post" > |
3 |
???? ? <h1 class = "entry-title" >Not Found</h1> |
4 |
?????? <div class = "entry-content" > |
5 |
????????? <p>Apologies, but no results were found.</p> |
6 |
? <?php get_search_form(); ?> |
7 |
?????? </div> |
8 |
??? </div> |
9 |
<?php endif ; ?> |
CSS代碼
CSS描述性代碼,主要規范提現在代碼的可讀性上,如:
可讀性較高的:
1 |
#selector-1, |
2 |
#selector-2, |
3 |
#selector-3 { |
4 |
??? background: #fff; |
5 |
??? color: #000; |
6 |
} |
欠缺可讀性的:
1 |
#selector-1, #selector-2, #selector-3 { |
2 |
???? background: #fff; |
3 |
???? color: #000; |
4 |
???? } |
5 |
6 |
#selector-1 { background: #fff; color: #000; } |
還有就是CSS類的命名上,應該避免駝峰式的語法,而是使用 – 作為單詞分隔符,而且保證所用單詞的具有描述性質,如:
正確的應該像這樣#comment-form
,#commentForm
或者 #comment_form
再或者 div#comment_form
都是不好的,類似#c1-xr
這種更是反人類,類名最好能只看名字就猜得出來是哪個位置的CSS代碼。
如果使用屬性定位,則需要使用雙引號把屬性值包括起來,如 input[type="text"]
這樣的寫法,類似?input[type=text]
的寫法是錯誤的。
在必要的地方使用合理的注釋也是極好的編碼習慣之一。
引入CSS代碼文件時使用?wp_register_style
函數注冊文件地址和使用?wp_enqueue_style
函數引入。
JavaScript代碼
JavaScript代碼需要注意的地方太多了,這里不方便一一例舉,只提一個點特別需要注意的。
在WordPress中使用開源框架時,請先檢查WordPress有沒內置。如 jQuery ,WordPress內置了,我們就可以直接使用?wp_enqueue_script
函數調用,而無需再自行引入,如果需要在代碼中使用美元符號,則使用這樣的語法:
1 |
( function ( $ ) { |
2 |
??? // Expressions |
3 |
})( jQuery ); |
引入JavaScript代碼文件時使用 wp_register_script
函數注冊文件地址和使用 wp_enqueue_script
函數引入。
PHP代碼
PHP基本語法應該按照PHP手冊說的來,但是有幾點需要特別提到的:
- 不要使用短標簽
<?
而是使用<?php
- 合理使用縮進和空格提高代碼可讀性
- 賦值使用的符號(如 = )前后應該使用空格
- 使用三元操作符時把變量放在右邊
- 注釋總是需要的
使用內置函數
正確使用WordPress函數是WordPress開發中需要得到重視的一點,如在文章循環中獲得文章標題應該使用get_the_title()
而不是 $post->post_title
,不僅僅為了代碼的統一性和數據處理,最主要的原因是這些封裝好的函數里都為了這些內容提供了獨一無二的鉤子,通過這些鉤子可以很方便地修改這些內容,但是如果直接輸出數據庫查詢結果而不是使用函數,這一切就不復存在了。
WordPress函數眾多,具體請看函數參考:http://codex.wordpress.org/zh-cn:%E5%87%BD%E6%95%B0%E5%8F%82%E8%80%83
常見的內容查詢和更新函數分類:
- 文章,頁面,附件,書簽
- 分類,標簽,分類法
- 用戶和作者
- 供稿(Feed)
- 評論,通知和引用(Ping,Trackback)
- 主題相關
需要在某個地方插入執行代碼使用動作(Action)函數,需要過濾某個地方的數據使用過濾器(Filter)函數,過濾時使用格式化(Formatting)函數。
抓取網頁(GET 或 POST)使用內置的?HTTP API
,AJAX 處理使用?WP_Ajax_Response
類,對象緩存使用?WP_Object_Cache
類(一般緩存直接使用?Transients API
即可),錯誤處理使用?WP_Error
類,文章查詢使用?WP_Query
類,鏈接重寫使用?WP_Rewrite
類,用戶角色處理使用?WP_Roles
類,數據庫查詢使用?wpdb
類(如果需要新建數據表,命名時請使用 $wpdb->prefix
作為前綴)。
還有小工具接口,編輯器接口,定時任務接口等。具體內容在往后的教程逐步添加。