我有一个由wordpress制作的网站,我制作了一些我想要执行的php文件,出于某种原因我需要require_once(/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没有安装在root文件夹中,就像root / live
答案 0 :(得分:11)
假设这是你的文字代码:
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';
这将在子路径之前插入网站的当前根路径。默认情况下,$_SERVER['DOCUMENT_ROOT']
是PHP具有“根路径”的唯一外观。除非你教得更好。
答案 1 :(得分:2)
例如,可以用于您主题的functions.php
:
if (!defined("MY_THEME_DIR")) define("MY_THEME_DIR", trailingslashit( get_template_directory() ));
require_once MY_THEME_DIR.'includes/bs4navwalker.php';
答案 2 :(得分:0)
正如评论中所提到的,require是一个文件系统本地程序 - 它不会处理htaccess规则。
你正试图
require_once(/wp-includes/class-phpass.php);
这是在你的机器上查找/ wp-includes /
如果您的wordpress安装在document_root中(burt不是推荐方式),这将有效:
require_once($_SERVER['DOCUMENT_ROOT'] . '/wp-includes/class-phpass.php');
但你应该用这个:
$install_path = get_home_path();
require_once($install_path. '/wp-includes/class-phpass.php');
从此codex页面引用:http://codex.wordpress.org/Function_Reference/get_home_path
如果您制作的脚本需要使用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');