0

我正在构建一个只应该在我的网站上使用的 Wordpress 插件。我已将它放在 wp-content/plugins/myPlugin 下的常规位置。在那个目录中,我放置了一个 index.php 以防止目录列表,并通过将请求发送到 wordpress 的 404 页来隐藏一个名为 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 管理员设置了一些全局变量?

4

2 回答 2

2

添加到 Sammitch 的答案中,这就是您可以用于 WordPress 的内容:

defined('ABSPATH') or die("Your message here");

ABSPATH定义在wp-load.php

/** Define ABSPATH as this file's directory */
define( 'ABSPATH', dirname(__FILE__) . '/' );
于 2013-06-19T05:22:12.297 回答
0

许多应用程序在其全局头文件中执行以下操作:

define('_JEXEC', TRUE); // Joomla, btw

这样您就可以在不希望在应用程序上下文之外执行的文件中执行类似的操作:

if( !defined('_JEXEC') ) { die('unatuhorized'); }

但是,不幸的是,Wordpress 似乎并没有完全做这样的事情,但它确实定义了一个由其他常量组成的度量按钮WP_USE_THEMES,您可以为自己的目的进行侧插。

您还可以使用get_defined_constants()插件运行时定义的列表。

于 2013-06-18T23:05:37.333 回答