WordPress开发入门04:PHP在文件中呈现的2种方式

为了在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种方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虚坏叔叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值