WordPress的PHP文件内插件403错误

km0tfn4u  于 2023-10-17  发布在  WordPress
关注(0)|答案(2)|浏览(134)

我写一个WordPress的插件,我需要打开一些PHP代码的新窗口,以显示来自数据库的信息。到目前为止,我让它工作的方法是将这些页面添加到插件的目录中,但这些文件不应该以这种方式访问。
我知道include()函数;然而,我只是让它在我的安装根中工作,而不是实际上在插件内部。每当我试图将myphp.php放入plugin文件夹中的目标文件夹时,我都会得到一个403错误。
我试过这个(https://stackoverflow.com/a/39800534/19996081)解决方案,这是我能找到的最接近我的问题的解决方案,但它不会改变任何事情。
这是我的插件页面,链接到myphp.php:

include(site_url("/wp-content/plugins/myPlugin/myphp.php")); 
// some HTML...

<a href="<?php echo site_url("/wp-content/plugins/myPlugin/myphp.php"); ?>" target="blank">click</a>

和myphp.php:

<?php
require_once(dirname(__FILE__) . '/../../../../wp-config.php');
$wp->init();
$wp->parse_request();
$wp->query_posts();
$wp->register_globals();
$wp->send_headers();

// content goes here...

?>

我试着把文件放在不同的位置,只有当myphp.php和wp-config在同一个文件夹(根)时才有效。尝试不同的路径来达到wp-config(硬编码,$_SERVER)没有工作.

g9icjywg

g9icjywg1#

1.当用户登录时,在管理区域创建一个nonce:

$nonce = wp_create_nonce('whatever_nonce_name');

1.使页面url像这样:

$pageUrl = site_url("/wp-content/plugins/myPlugin/myphp.php") . "?nonce={$nonce}"

最好使用一个动态的url,而不是硬编码你的插件的名称,但这是另一个主题。
1.添加HTML链接:

<a href="<?php echo $pageUrl; ?>" target="blank">click</a>

1.在你的php文件中,做一些类似这样的事情:

<?php
    require_once "../../../../wp-load.php";

    if ( ! isset($_GET['nonce']) || ! wp_verify_nonce($_GET['nonce'], 'whatever_nonce_name')) {
        exit( __('Access denied.') );
    }

    // rest of the code here.
?>
tzdcorbm

tzdcorbm2#

使前端页面,并允许用户访问它的密码或东西. Wont show page in menu or menu

相关问题