WordPress大學(xué) 很多教程都提到“將代碼添加到主題的 functions.php 文件”,但總有些新手朋友總是反饋說(shuō):如何添加?添加后出錯(cuò)?添加后網(wǎng)站就不能訪問(wèn)啦……所以今天就來(lái)說(shuō)說(shuō)編輯 functions.php 文件應(yīng)該注意哪些問(wèn)題。
functions.php 有什么用
functions.php 是 WordPress 預(yù)留的功能函數(shù)文件,專門(mén)用于添加各種自定義函數(shù)代碼。現(xiàn)在的WordPress主題的功能越來(lái)越強(qiáng)大了,一般都自帶了 functions.php 這個(gè)文件(通常在主題根目錄)。
php中的注釋
注釋,就是專門(mén)用來(lái)對(duì)代碼進(jìn)行補(bǔ)充說(shuō)明的文本,一般分為單行注釋和多行注釋,單行注釋使用兩個(gè)斜杠 // ,多行注釋使用 /* */,示例:
<?php
/**
* 這是多行注釋
* 注釋2行
*/
function hello_world() {
// 單行注釋
// 再注釋一行
echo "<p>Hello World!</p>";
}
?>
php代碼應(yīng)該添加到 <?php 和 ?> 之間
打開(kāi) functions.php 文件,你會(huì)發(fā)現(xiàn),文件開(kāi)頭一般都是 <?php ,表明這個(gè)文件是遵循php代碼規(guī)范的,你需要將函數(shù)代碼添加到它的里面,比如:
<?php
//開(kāi)始php語(yǔ)法
function hello_world() {
echo "<p>Hello World!</p>";
}
//結(jié)束php語(yǔ)法
?>
避免 <?php 和 ?> 多重嵌套
在 <?php 和 ?> 之間,不要再添加 <?php 和 ?>,如下面的例子就是錯(cuò)誤的:
<?php
//開(kāi)始php語(yǔ)法
<?php //錯(cuò)誤:嵌套啦
function hello_world() {
echo "<p>Hello World!</p>";
}
?>
可以看到,第一個(gè) <?php 沒(méi)有結(jié)束,又嵌套了一個(gè) <?php ,這樣的后果就是導(dǎo)致部分 php 代碼失效,嚴(yán)重的可能會(huì)導(dǎo)致網(wǎng)站崩潰。
不要在 <?php 和 ?> 之間直接添加其他語(yǔ)種代碼
<?php 和 ?> 之間的代碼應(yīng)該符合php語(yǔ)言規(guī)范,你不可以直接在他們之間直接添加其他語(yǔ)種代碼,比如以下幾種錯(cuò)誤類型:
<?php
//錯(cuò)誤1:直接添加文本
Hello World!
//錯(cuò)誤2:直接添加html代碼
<div><p>Hello World!</p></div>
//錯(cuò)誤3:直接添加js代碼
<script type="text/javascript">
$(document).ready(function() {
$("a.anchorLink").anchorAnimate()
});
</script>
//錯(cuò)誤4:直接添加css代碼
<style type="text/css" media="screen">
.textComment{
display: inline;
}
</style>
?>
可能有些朋友會(huì)說(shuō),為什么我看到有些人可以添加html代碼?比如下面代碼的第 5 行:
<?php
function hello_world() {
echo "<p>Hello World!</p>";
?>
<div><p>Hello World!</p></div>
<?php
}
?>
其實(shí)這是php和html混排,Html代碼并沒(méi)有直接添加在 <?php 和 ?> 之間,你可以看到 第 4 行結(jié)束php語(yǔ)法,第 6 行重新開(kāi)始 php語(yǔ)法,這種寫(xiě)法是合法的。
注意字符轉(zhuǎn)義
網(wǎng)絡(luò)上很多代碼由于沒(méi)有使用代碼高亮插件,可能會(huì)導(dǎo)致代碼中的某些字符發(fā)生轉(zhuǎn)義,或其他錯(cuò)誤。比如:
半角符號(hào)變成全角符號(hào):引號(hào)、逗號(hào)、句號(hào)、冒號(hào)、括號(hào)、分號(hào)等
常見(jiàn)的轉(zhuǎn)義:< 變成 < ,> 變成 > ,& 變成 & 等
注意php文件的編碼
WordPress 是使用 utf-8 格式編碼的php程序,utf-8編碼又分為 含BOM 和 無(wú)BOM 兩種,由于我們很可能在 php 文件中添加了中文,所以建議保存 functions.php 等php文件為 Utf-8 無(wú) BOM 格式。否則,很可能會(huì)出現(xiàn) 網(wǎng)站空白、布局錯(cuò)亂、出現(xiàn)異常文字 等問(wèn)題。
使用專業(yè)的代碼編輯工具
強(qiáng)烈建議大家使用專業(yè)一點(diǎn)的代碼編輯工具,比如 Notepad++、Sublime Text、EditPlus、DreamWeaver等,使用這類工具的好處:支持代碼高亮、代碼糾錯(cuò)提示、快捷插入代碼片段、支持選擇編碼類型等等。
特別提示:不要使用微軟自帶的 txt記事本編輯器 來(lái)編輯 php 文件!!很可能會(huì)導(dǎo)致代碼錯(cuò)誤、編碼錯(cuò)誤等問(wèn)題!!很多 FTP軟件默認(rèn)也是調(diào)用 txt記事本編輯器的 ,需要注意。
最后,建議大家學(xué)習(xí)一下 php編程入門(mén),至少簡(jiǎn)單了解一下基本的語(yǔ)句用法,比如 if、echo 等。





我只是想用wp設(shè)計(jì)一個(gè)網(wǎng)站而已,現(xiàn)在感覺(jué)得重新去讀一個(gè)計(jì)算機(jī)的本科?
任何人接觸新的東西,都是需要學(xué)習(xí)和實(shí)踐的,沒(méi)有人可以生來(lái)就會(huì)。如果你想快速開(kāi)始搭建一個(gè)網(wǎng)站,可以看下我們的成品站模板 http://www.ydqwiac.cn/wordpress-templates 是否有接近你想法的,找一套基本符合的作為起點(diǎn),你會(huì)省時(shí)省力很多。當(dāng)然了,有預(yù)算的話,找我們定制,高效又專業(yè)
你好 博主 我也是不小心修改了functions文件 網(wǎng)站訪問(wèn)不了 我也刪除了添加的代碼 notepad++改了 utf-8 無(wú)bom格式用ftp上傳到網(wǎng)站 但是為什么還是不能訪問(wèn)。。。。求解
這是原版的
<?php
// include xiu theme functions file
include 'functions.xiu.php';
// custom functions
我想加WordPress大學(xué)的代碼
/**
* 移除 WordPress 評(píng)論的網(wǎng)址URL表單及評(píng)論人鏈接
* http://www.ydqwiac.cn/remove-wordpress-comments-url.html
*/
//移除網(wǎng)址表單
function url_filtered($fields)
{
if(isset($fields['url']))
unset($fields['url']);
return $fields;
}
add_filter('comment_form_default_fields', 'url_filtered');
//移除評(píng)論人名字的鏈接
function disable_comment_author_links( $author_link ){
return strip_tags( $author_link );
}
add_filter( 'get_comment_author_link', 'disable_comment_author_links' );
沒(méi)見(jiàn)到?結(jié)束啊,請(qǐng)問(wèn)這么加倡萌?!
沒(méi)有 ?> 結(jié)束符也是可以的
倡萌,我的網(wǎng)站現(xiàn)在就打不開(kāi)了 就是因?yàn)楦牧薴unctions.php 這個(gè)文件,在線求等 怎么辦啊?
使用FTP插件下載functions.php,然后刪除你修改出錯(cuò)的代碼,將文件另存為 utf-8 無(wú) bom 格式(使用文章介紹的一些專業(yè)編輯軟件)
同難,試了多款FTP工具連接不到主機(jī),網(wǎng)站IP地址應(yīng)該沒(méi)錯(cuò),難受啊,憋屈
申請(qǐng)轉(zhuǎn)載這篇文章,請(qǐng)回復(fù)可否,謝謝。
轉(zhuǎn)載本文請(qǐng)注明出自 WordPress大學(xué) ,并且保留本文鏈接地址(可點(diǎn)擊)
現(xiàn)在就是只敢改這個(gè)文件,以及header和footer兩個(gè)。其他真心不敢動(dòng)。那個(gè)混排,其實(shí)會(huì)出錯(cuò),我不知道是怎么回事。div后面必須要調(diào)用class函數(shù),或者定義新class
應(yīng)該沒(méi)有你說(shuō)的這個(gè)情況吧,div不一定要含有class
有!有一篇移除WordPress自帶Meta(功能)小工具中的無(wú)用鏈接 | WordPress大學(xué)
http://www.ydqwiac.cn/custom-meta-widget.html這篇里面的代碼整進(jìn)去,就得把文件崩潰了。那個(gè)東西弄得我只能專門(mén)下載插件進(jìn)行處理。
倡萌有言說(shuō)的太霸氣了 恒創(chuàng)貌似挺有名的,我有好幾個(gè)朋友都用的這個(gè)
一開(kāi)始出過(guò)錯(cuò),后來(lái)學(xué)著學(xué)著就會(huì)了。。
大都是這樣過(guò)來(lái)的
頂一個(gè),認(rèn)真學(xué)習(xí)了,希望有進(jìn)步。