【问题标题】:How does php know about wordpress functionsphp是如何知道wordpress函数的
【发布时间】:2015-02-01 21:57:05
【问题描述】:

我是网络开发的新手。我现在正在发现 wordpress 模板。它们都有相似的结构。但我注意到一件对我来说很有趣的事情。
php模板文件中有函数调用。喜欢get_header(), get_footer()。但我不明白 PHP 解释器是如何知道这个函数的,没有任何包含,需要....
这是如何工作的,请解释一下。如果有任何帮助,我将不胜感激。

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    查看 Wordpress 文件夹中以 index.php 开头的文件,这是第一个加载的文件。您将看到“require( dirname( __FILE__ ) . '/wp-blog-header.php' );”,而这仅仅是开始。

    为了回答您的问题,wordpress 使用“require”来包含文件。

    【讨论】:

    • 我想我应该添加这一行,或者它是在 wordpress 中安装时自动添加的,我一直在发现裸模板,没有安装,所以我找不到这个 require 声明。我说的对吗?
    • 这一切都是自动的。您永远不必添加这些行。 Wordpress 在某些文件夹中搜索某些文件,并在需要时添加它们。
    • 所以从网上下载的裸模板没有这行,但是通过管理面板安装模板时,wordpress会自动添加require行作为index.php的第一行,对吗?跨度>
    • 没有。我编辑了我之前的评论。 Wordpress 只会搜索某些文件,例如自定义模板,它们会自动包含在内。模板文件包含在 wordpress 核心文件之后,因此每个模板文件都不需要它们。
    【解决方案2】:

    【讨论】:

      【解决方案3】:

      php 模板文件本身包含在某处。例如:

      function get_header() { /* ... */ }
      include("page.php");
      

      【讨论】:

        【解决方案4】:

        在加载模板之前,wordpress 主题中的所有函数都已在 Wordpress 核心代码的其他位置声明。

        【讨论】:

          【解决方案5】:
          get_header() 
          

          在 wp-includes/general-template.php 中定义。

          那么 wp-includes/general-template.php 是如何被包含进来的呢?

          wp-settings.php requires wp-includes/general-template.php.
          wp-config.php requires wp-settings.php.
          wp-load.php requires wp-config.php.
          wp-blog-header.php requires wp-load.php.
          index.php requires wp-blog-header.php.
          

          每个页面请求都是从加载 index.php 开始的。

          如果您使用的是 Linux,则可以使用 grep 查找对文件的引用。例如

          grep -r "function get_header(" *
          

          返回定义了 get_header() 函数的文件列表。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-02-27
            • 2010-12-22
            • 1970-01-01
            • 2016-11-25
            • 2015-05-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多