我有一个插件,它可以打开一个弹出窗口并在其中显示内容,不使用任何默认的wordpress主题/样式等。
我的问题是,确保访问此窗口的最佳方式是什么?此时,如果用户将地址复制/粘贴到浏览器中,它将显示内容。我希望它只对以管理员身份登录的用户可见。
然而,当我向插件登录页添加一些基本安全性时,它会影响整个网站,而不仅仅是插件页:
my-plugin.php (located in /wp-content/plugins/my-plugin)
function check_logged_in() {
if(!is_user_logged_in()){
die(\'foo\');
}
}
add_action( \'wp_loaded\', \'check_logged_in\' );
无论我是访问插件页面还是网站上的任何其他页面,都会执行此操作。我希望它只适用于插件中的插件/子目录(即将适用于mysite.com/plugin/view-orders,但不适用于mysite.com/contact)
SO网友:majick
在插件文件中添加一些AJAX操作,如下所示。。。第一个(无_nopriv
) 将仅对登录用户执行,第二个将仅对注销用户执行,因此无需重新测试is_user_logged_in()
此处:
add_action(\'wp_ajax_show_popup_contents\', \'show_popup_contents\');
function show_popup_contents() {
$filepath = dirname(__FILE__).\'/popup.php\';
include($filepath); exit;
}
add_action(\'wp_ajax_nopriv_show_popup_contents\', \'deny_popup_contents\');
function deny_popup_contents() {
wp_die("You need to be logged in to view these contents.");
}
然后将弹出式URL设置为
/wp-admin/admin-ajax.php?action=show_popup_contents
您可能还想添加if (!defined(\'ABSPATH\')) {exit;}
在包含的popup.php
文件,因此无法通过这种方式直接访问。