如何在wordpress中允许require_once()到php文件

时间:2014-10-16 21:30:22

标签: php wordpress .htaccess require-once

我有一个由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

3 个答案:

答案 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)

与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';

答案 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');