gpt4 book ai didi

php - WordPress wp-load.php

转载 作者:IT王子 更新时间:2023-10-29 00:08:03 24 4
gpt4 key购买 nike

我正在尝试对插件进行逆向工程:http://wordpress.org/extend/plugins/wordpress-social-login/

其中的一部分,有这样一行:
(我很难理解第一个,其余的仅供引用,如果他们有事可做。)

require_once( dirname( dirname( dirname( dirname( __FILE__ )))) . '/wp-load.php' );

define( 'WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL', plugins_url() . '/' . basename( dirname( __FILE__ ) ) );
define( 'WORDPRESS_SOCIAL_LOGIN_HYBRIDAUTH_ENDPOINT_URL', WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/hybridauth/' );

我的问题是……这个wp-load.php 文件中到底有什么是代码需要的?通过查看它,我所了解的是它加载了网站正确运行的关键核心 wordpress 文件(functions.phpwp-settings.phpwp-config.php 等等...)
插件运行的事实不是已经加载了 wp-load.php 吗?
这也是对资源的完全浪费,因为它包含如此多的文件,这些文件可能还包含其他文件,它就像一个无限循环的所需文件,每个文件都在另一个文件中,被加载两次..(如果其他插件使用它,甚至更多)也是一种方法)

那么它到底有什么作用呢?

附言;我通过 Google-ing 发现的只是如何正确包含它(因为路径是可变的)——但这不是我的问题。

最佳答案

My question is... what exactly is in this wp-load.php file that it needs to be required by the code?

所有核心 WordPress 功能。这包括主题文件、事件插件的所有文件等。但是以这种方式加载 WordPress 不会解析请求的 URL,也不会运行 WordPress 查询(通过初始化 WP 对象,也不是 WP_Query 对象)。

By looking at it, all I understand is that it loads crucial core wordpress files for the site to be running correctly (functions.php, wp-settings.php, wp-config.php etc...)

是的,你没看错。

Doesn't the fact that the plugin runs already means wp-load.php is loaded?

如果插件代码被 WordPress 调用(例如为了显示管理页面,或者它包含在最初加载的插件文件中)- 那么是的,这意味着 wp-load.php 已经加载。

有时,插件会将请求定向到单个文件(例如 http://example.com/wp-content/plugins/my-plugin/sample.php),而不是某些 WordPress支持页面(例如 http://example.com/?my_plugin_action=samplehttp://example.com/wp-admin/admin-ajax.php ).

查看第一个 URL 如何引用 my-plugin 插件目录中的特定文件,第二个 URL 如何通过添加特定查询参数转到站点主页,或者第三个示例,其中引用的文件是 wp-admin 目录下的 admin-ajax.php - 这是一个特殊的文件,它使得插件很容易发出 AJAX 请求(这个文件还会加载 WordPress 核心并触发一些操作 Hook )。

在第一个引用的情况下,如果插件想要使用一些 WordPress 功能(用于引用数据库、操作帖子等),它需要通过包含 wp-load.php 来加载 WordPress 核心文件

Also it's a complete waste of resources since it includes so many files that may include other files as well and it's like an endless loop of required files, each within another, which are being loaded twice.. (or even more if other plugins use this kind of method too)

请注意 require_once(... 中的 _once 部分 - 这告诉 PHP 包含尚未包含的文件已经。因此不会发生冲突,PHP 也不会使用太多内存。尽管 - 如果您处于 WordPress 已经启动的上下文中,则不应调用 require 函数。


所以,基本上插件作者希望对您在其中找到此代码的插件文件发出一些请求。由于作者想在此文件中使用 WordPress 功能,因此他调用了 wp-load.php 文件以加载核心功能。

我假设这样做是为了减少服务器上的负载,尽管在 plugins_loaded 操作 Hook 和自定义 $_GET 上运行了几个 Hook > 添加到主页 url 的参数,结果应该仍然非常接近。

我个人更喜欢第二种选择,但就像我说的,包括 wp-load.php 阻止 WordPress 运行一些复杂的东西(URL 解析和数据库查询/是)。

如果还有什么地方您不太了解 - 请在此处发表评论,我会尝试进一步解释。

关于php - WordPress wp-load.php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13860577/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com