WordPress開發入門04:PHP在檔案中呈現的2種方式

huangbangqing12發表於2018-07-08

為了在PHP檔案中編寫PHP程式碼,我們必須做一個額外步驟,就是開啟和關閉所謂的PHP塊

如果你嘗試在PHP程式碼塊之外編寫PHP程式碼,那麼它將顯示為純文字。而不會被解析。

相反地,如果你嘗試在PHP塊中寫入純HTML程式碼,那麼也會導致錯誤

實際上,在某些檔案中,比如說大多數WordPress核心檔案,所有的程式碼都寫在PHP程式碼塊中。這意味著它是純PHP檔案

在其他檔案(比如模板檔案)中,通常會有很多小的PHP程式碼塊。這意味著你可能會在同一個檔案中混用HTML和PHP

這兩種情況在WordPress中都是完全可以接受的。

純PHP檔案

在文字編輯器中開啟wp-config.php檔案:

You must be logged in to view the hidden contents.

我們會看到它開啟一個PHP程式碼塊,後面是一大堆PHP程式碼:

<?php
/**
 * WordPress基礎配置檔案。
 *
 * 這個檔案被安裝程式用於自動生成wp-config.php配置檔案,
 * 您可以不使用網站,您需要手動複製這個檔案,
 * 並重新命名為“wp-config.php”,然後填入相關資訊。
 *
 * 本檔案包含以下配置選項:
 *
 * * MySQL設定
 * * 金鑰
 * * 資料庫表名字首
 * * ABSPATH
 *
 * @link https://codex.wordpress.org/zh-cn:%E7%BC%96%E8%BE%91_wp-config.php
 *
 * @package WordPress
 */

// ** MySQL 設定 - 具體資訊來自您正在使用的主機 ** //
/** WordPress資料庫的名稱 */
define('DB_NAME', 'localwp');

/** MySQL資料庫使用者名稱 */
define('DB_USER', 'wpuser');

/** MySQL資料庫密碼 */
define('DB_PASSWORD', 'root');

/** MySQL主機 */
define('DB_HOST', 'localhost');

/** 建立資料表時預設的文字編碼 */
define('DB_CHARSET', 'utf8mb4');

/** 資料庫整理型別。如不確定請勿更改 */
define('DB_COLLATE', '');

/**#@+
 * 身份認證金鑰與鹽。
 *
 * 修改為任意獨一無二的字串!
 * 或者直接訪問{@link https://api.wordpress.org/secret-key/1.1/salt/
 * WordPress.org金鑰生成服務}
 * 任何修改都會導致所有cookies失效,所有使用者將必須重新登入。
 *
 * @since 2.6.0
 */
define('AUTH_KEY',         '&=eArwobk:Q0y=a-g*_;lAzr}+/%V(k{tek{[`i+w.+C|[7oWojj)vGWi=g?qbGK');
define('SECURE_AUTH_KEY',  'yH[.PP];y(m3qvfahQ(Cj%g6+~MHlOo%$lM|~,2aNe2p?P{R&{KX0xXAXi,(vMY)');
define('LOGGED_IN_KEY',    ' ~Ss_VR,1.C(~izSn80EPjP{0p]h+/>0:ciZl$RKqU!bPdBKAeSHQRn[z>!:.izX');
define('NONCE_KEY',        ']*&K cD}Y+WQOr|d_t=D|WU*kMFQz2uJVU?x.G+O!Rwg0a~]#Ko.rLWa[a1}Jzgp');
define('AUTH_SALT',        'S91]z;%G>l[O9hTjVmz0^2py>JN7Yo3u(gbCM?X~=hkr;)@sMQmgX207ft:zEOiW');
define('SECURE_AUTH_SALT', 'J$odH<se--OW0/4V*<`+)sVGZp.x[Q>ylRJ<4@O9b7bmAJr:OO(-dL>e-c)omuUz');
define('LOGGED_IN_SALT',   ',+.x@Y.>a<+,Oh6Td~9S+gZy-Vka&KxV{|[,F)4qe1$YIjv)6J}e,_e&$xk3Vi_?');
define('NONCE_SALT',       'gLmrI$%=t)7Uc#$?[ONAOg;!>jg3SvE@m;7Y;VNI[bC#<yUzf;kI!lMuglY+k]?j');

/**#@-*/

/**
 * WordPress資料表字首。
 *
 * 如果您有在同一資料庫內安裝多個WordPress的需求,請為每個WordPress設定
 * 不同的資料表字首。字首名只能為數字、字母加下劃線。
 */
$table_prefix  = 'wptest_';

/**
 * 開發者專用:WordPress除錯模式。
 *
 * 將這個值改為true,WordPress將顯示所有用於開發的提示。
 * 強烈建議外掛開發者在開發環境中啟用WP_DEBUG。
 *
 * 要獲取其他能用於除錯的資訊,請訪問Codex。
 *
 * @link https://codex.wordpress.org/Debugging_in_WordPress
 */
define('WP_DEBUG', false);

/**
 * zh_CN本地化設定:啟用ICP備案號顯示
 *
 * 可在設定→常規中修改。
 * 如需禁用,請移除或註釋掉本行。
 */
define('WP_ZH_CN_ICP_NUM', true);

/* 好了!請不要再繼續編輯。請儲存本檔案。使用愉快! */

/** WordPress目錄的絕對路徑。 */
if ( !defined('ABSPATH') )
    define('ABSPATH', dirname(__FILE__) . '/');

/** 設定WordPress變數和包含檔案。 */
require_once(ABSPATH . 'wp-settings.php');
/***它不會關閉PHP塊***/

但是,它不會關閉PHP塊。那麼這裡為什麼沒有關閉程式碼塊呢?這是WordPress中的一個有趣的地方。

從技術上講,我們可以關閉它,也有人說應該關閉這個PHP塊。

WordPress官方原始碼沒有關閉它,有這樣的2個原因。

  1. 執行WordPress的伺服器將會為我們自動關閉程式碼塊
  2. 在關閉PHP塊的後面如果有額外的空格,可能會導致問題。

因此,WordPress中很多純PHP檔案是沒有關閉程式碼塊。

但是,當你編寫自己的檔案時,你需要關閉PHP塊。

混用HTML和PHP檔案

現在,來看看一個包含相當多的HTML的檔案,其中只有一點點的PHP程式碼

我們開啟 twentyfifteen 預設主題標頭檔案:

可以看到,在這個header.php的頂部,在開頭,就是PHP程式碼塊,裡面有一段註釋,接著是大量的HTML程式碼

<?php
/**
 * The template for displaying the header
 *
 * Displays all of the head element and everything up until the "site-content" div.
 *
 * @package WordPress
 * @subpackage Twenty_Fifteen
 * @since Twenty Fifteen 1.0
 */
?>/***以上部分是PHP程式碼塊***/
<!DOCTYPE html>
<html <?php language_attributes(); ?> class="no-js">
<head>
    <meta charset="<?php bloginfo( 'charset' ); ?>">
    <meta name="viewport" content="width=device-width">
    <link rel="profile" href="http://gmpg.org/xfn/11">
    <link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>">
    <!--[if lt IE 9]>
    <script src="<?php echo esc_url( get_template_directory_uri() ); ?>/js/html5.js"></script>
    <![endif]-->
    <?php wp_head(); ?>
</head>/***以上部分是HTML程式碼***/

所以,這是PHP程式碼在檔案中呈現的2種方式。

相關文章