【问题标题】:How does wordpress know about its functions?wordpress 是如何知道它的功能的?
【发布时间】:2010-12-22 23:00:53
【问题描述】:

特别是在主题 php 文件中,例如 index.php。大多数主题的 index.php 文件中的第一件事是调用 get_header(),这肯定没有在 index.php 中定义,那么它是如何知道该函数的呢?

我对 php 不是很熟悉,但是从我刚才阅读的内容来看,有一个 include 和 require 关键字,它们的工作方式或多或少与 C 中的 import in Java or include 相同,我理解并制作了感觉。然而,在这个特定的 index.php 文件中,这些关键字的唯一用法包括一个不包含 get_header() 定义的文件,它本身也没有任何包含或要求(尽管它确实调用了更多的函数)无权知道,很像 index) 这么清楚现在它是如何知道这个函数的。

无论如何,我只是希望自己从 wordpress 中删除一些“魔法”。提前致谢!

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    很可能,index.php 被包含在另一个文件中,并且该文件定义了 get_header() 函数,或者 - 更有可能 - 包含另一个包含的 php 文件,该文件又定义了 get_header() 函数。

    您必须了解 php includerequire 函数的行为类似于内联包含。它只是将包含文件视为原始脚本的一部分.. 一个大的串联脚本(所以不像 Java 中的 import

    您可能希望从 .htaccess 文件开始,该文件会告诉您分配了哪个 .php 文件来处理请求。根据您在问题中所说的,它可能不是 index.php。当您找到最顶层的 php 脚本时,您可以从那里使用 includes 和 requires..

    【讨论】:

    • 哎呀,你说得对,它与 java 导入不相似,谢谢指出!
    【解决方案2】:

    在 c 和 java 中,您在文件顶部声明导入。在 php 中,您几乎可以设置包含任何您想要的软件。

    所以这是有效的:

    <?php 
    // define some functions
    ?>
    <html>
    <head>
    <?php
    include('head.php');
    ?>
    </head>
    <body></body></html>
    

    这些get_header() 方法可能是在 index.php 页面被包含之前的某个地方声明的。

    如果你想省略&lt;?php get_header(); ?&gt;,那么没有问题

    【讨论】:

      【解决方案3】:

      主题的 index.php 文件不是被处理的主文件,它位于你的 wordpress 安装的根目录中。它调用几个文件设置环境,然后加载模板。您可能想查看wp-content/plugins 目录,可能从globals.php 文件开始调整一些魔法。

      wp-includes 目录也包含有趣的文件,get_header() 函数在该目录的general-template.php 中定义。

      【讨论】:

      • 谢谢!正是我正在寻找的那种答案:)
      【解决方案4】:

      特别是在主题 php 文件中,例如 index.php。大多数主题的 index.php 文件中的第一件事是调用 get_header(),这肯定没有在 index.php 中定义,那么它是如何知道该函数的呢?

      主题的index.php 文件永远不会单独执行。 所有对 WordPress 安装的请求都通过主 WordPress index.php 文件。

      【讨论】:

        【解决方案5】:

        每个主题中的 index.php 从未被直接调用,而是被 Wordpress 中的其他文件包含。

        get_header实际上是在wp-includes/general-template.php中定义的。

        模板文件由wp-includes/theme.phpload_template函数中的require_once函数调用加载

        【讨论】:

          猜你喜欢
          • 2011-02-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-30
          • 2014-10-26
          • 1970-01-01
          相关资源
          最近更新 更多