我正在尝试直接在浏览器中访问插件文件,因此我可以运行一个cron。
当我转到正确的网址时,我发现找不到网页错误。
默认情况下,wordpress会阻止您直接访问吗?它可能与.htaccess有关,或者我应该能够直接查看吗?
我正在尝试访问这样的文件(只是一个例子):
http://mywebsite.com/wp-content/plugins/askimet/askimet.php
非常感谢任何帮助!
答案 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
。您的插件应该在正常页面请求(例如init
或template_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核心。