如何允许在wordpress中对php文件使用require_once()

如何允许在wordpress中对php文件使用require_once(),php,wordpress,.htaccess,require-once,Php,Wordpress,.htaccess,Require Once,我有一个由wordpress制作的网站,我制作了一些我想要执行的php文件,出于某种原因,我需要一次_(/wp includes/class phpass.php),但打开所需错误失败,根文件夹中有一个htaccess文件,但它在wp includes文件夹中不存在。htaccess包含以下内容: # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.

我有一个由wordpress制作的网站,我制作了一些我想要执行的php文件,出于某种原因,我需要一次_(/wp includes/class phpass.php),但打开所需错误失败,根文件夹中有一个htaccess文件,但它在wp includes文件夹中不存在。htaccess包含以下内容:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
#开始WordPress
重新启动发动机
重写基/
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
#结束WordPress
那么如何解决这个问题呢,谢谢

编辑


我的wordpress没有安装在根文件夹中,就像在注释中提到的root/live一样,require是一个文件系统本地过程-它不处理htaccess规则

你是想

require_once(/wp-includes/class-phpass.php);
这是在您的机器根目录中查找/wp includes/

如果您的wordpress安装在文档的根目录中,这将起作用(burt不是推荐的方式):

但是你应该用这个:

$install_path = get_home_path();
require_once($install_path. '/wp-includes/class-phpass.php');
如本法典页所述:

如果您正在制作需要使用wordpress核心的脚本,但这些脚本不是在wordpress本身的范围内执行的,那么您需要执行以下操作:

define('WP_USE_THEMES', false);
global $wp, $wp_query, $wp_the_query, $wp_rewrite, $wp_did_header;
require( $_SERVER['DOCUMENT_ROOT'] . '/path/to/wp-load.php');

$install_path = get_home_path();
require_once($install_path. '/wp-includes/class-phpass.php');

假设这是您的文字代码:

require_once('/wp-includes/class-phpass.php');
难怪找不到该文件,因为
require
在文件系统级别上运行,所以您可能需要类似
/var/www/mysite/wp includes/class phpass.php的内容

您应该能够让它像这样工作:

require_once $_SERVER['DOCUMENT_ROOT'] . '/wp-includes/class-phpass.php';
这将在子路径之前插入网站的当前根路径
$\u服务器['DOCUMENT\u ROOT']
默认情况下是PHP唯一具有“根路径”的外观,除非您将其教得更好。

Wordpress 5.x兼容: 例如,这可以用于主题的
functions.php

if (!defined("MY_THEME_DIR")) define("MY_THEME_DIR", trailingslashit( get_template_directory() ));

  require_once MY_THEME_DIR.'includes/bs4navwalker.php';

require
是一个文件系统本地过程,因此没有通过
.htaccess
规则。那么我为什么会出现这个错误?!可能是文件路径有问题。我的根目录如下/index.php/myfile.php/wp includes/class-phpass.php,函数为require_once(“/wp includes/class phpass.php”);有什么不对的吗?!是的,我像瘟疫一样避免使用Wordpress,所以我不知道它的所有自定义常量。我明确表示“应该能够让它工作”,因为它很可能在根目录中。如果
基本路径
可用,您仍然应该选择基于
的相对路径。但我将删除此答案,因为您的答案对于WP更为完整。我编辑了我的评论,看起来基本路径不再可用,并且是新的首选方法:(这也是我非常喜欢基于
\uuuu DIR\uuuu
-Wordpress及其蹩脚的不一致API的相对路径的原因之一。是的,我明天开始工作时需要修改一些主题,因为我刚刚意识到它们可能都是borken:oPHP不知道“主路径”的概念。PHP文件就是这样一个文件。它没有概念这就是为什么WP有这个函数的原因。致命错误:调用未定义的函数get_home_path()我已经编辑了我的答案-您可能希望在问题中包含更多关于将wordpress core包含到外部脚本中的信息…请注意,如果使用子主题,这将返回父主题文件夹的路径。get_stylesheet_directory()似乎更能防止错误。
if (!defined("MY_THEME_DIR")) define("MY_THEME_DIR", trailingslashit( get_template_directory() ));

  require_once MY_THEME_DIR.'includes/bs4navwalker.php';