wordpress插件直接在浏览器中访问文件

时间:2014-10-10 18:15:01

标签: wordpress .htaccess permissions

我正在尝试直接在浏览器中访问插件文件,因此我可以运行一个cron。

当我转到正确的网址时,我发现找不到网页错误。

默认情况下,wordpress会阻止您直接访问吗?它可能与.htaccess有关,或者我应该能够直接查看吗?

我正在尝试访问这样的文件(只是一个例子):

http://mywebsite.com/wp-content/plugins/askimet/askimet.php

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

WordPress不会阻止您直接访问PHP文件。但是,PHP文件本身通常都可以。这基本上可以确保WordPress已加载。

在您的示例中,akismet.php具有以下内容

// Make sure we don't expose any info if called directly
if ( !function_exists( 'add_action' ) ) {
  echo 'Hi there!  I\'m just a plugin, not much I can do when called directly.';
  exit;
}

你可能希望为你的插件加载WordPress。

相反,您需要让您的插件知道您可以检测和拦截的URL构造。例如,假设您访问了页面example.org/?my-plugin-action。您的插件应该在正常页面请求(例如inittemplate_redirect)上检查这一点,如果找到,请调用您的PHP脚本,然后调用exit;以便WordPress不会尝试加载一页。

function my_plugin_action() {
  if ( !isset($_GET['my-plugin-action']) ) return;

  echo 'Run cron task here.';
  exit;
}
add_action( 'init', 'my_plugin_action' );

回顾一下:不要直接调用您的插件。创建一个显示内容的URL,然后在WordPress尝试显示默认页面之前退出脚本。

答案 1 :(得分:1)

WordPress默认没有此限制。如果您愿意,可以直接在WordPress中访问文件。

查看文件代码是否包含以下内容 -

if ( ! defined( 'ABSPATH' ) )
//some action if accessed directly 

否则,请检查网址并确保路径正确。

还有一件事,如果您将直接访问插件文件并且它包含任何WordPress核心功能,它将会出错,因为在这种情况下,WordPress核心无法加载。

但是,有一些不推荐的方法来加载WordPress核心。