我正在构建一个Wordpress插件,只能在我的网站上使用。我把它放在wp-content / plugins / myPlugin下的常规位置。在该目录中,我放置了一个index.php来防止目录列表,并通过将请求发送到404页的wordpress来隐藏有一个名为myPlugin的目录。代码:
include ('../../../wp-load.php');
header("HTTP/1.0 404 Not Found - Archive Empty");
$wp_query->set_404();
require TEMPLATEPATH . '/404.php';
exit;
这虽然不妨碍任何人访问我的myurl.com/wp-content/plugins/myPlugin/myPlugin.php上的php文件。如何在我的插件中为此文件和其他php文件实现相同的404?重要的是要注意,这些文件应该可以通过Wordpress管理员访问。当我通过myurl.com/wp-admin/admin.php?page=myPlugin/myPlugin.php访问php文件时,wordpress admin可能会设置一些全局变量吗?
答案 0 :(得分:1)
添加Sammitch的答案,这就是你可以用于WordPress的内容:
defined('ABSPATH') or die("Your message here");
ABSPATH
在wp-load.php
中定义:
/** Define ABSPATH as this file's directory */
define( 'ABSPATH', dirname(__FILE__) . '/' );
答案 1 :(得分:0)
许多应用程序在其全局头文件中执行以下操作:
define('_JEXEC', TRUE); // Joomla, btw
因此,您可以在不希望在应用程序上下文之外执行的文件中执行此类操作:
if( !defined('_JEXEC') ) { die('unatuhorized'); }
但是,不幸的是,Wordpress似乎并没有完全像这样做,但它确实定义了一个公制的其他常量,如WP_USE_THEMES
,你可以侧面插入你的目的。
您还可以使用get_defined_constants()
列出插件运行时定义的内容。