未登录用户点击菜单链接无法跳转至WordPress登录页求助
问题分析与修复方案
核心问题
你的delete.php未加载WordPress核心运行环境,导致is_user_logged_in()、wp_redirect()这类WordPress内置函数无法生效,这是跳转失效的根本原因。同时代码存在语法错误,else块缺少闭合的}。
修复步骤
- 加载WordPress核心环境
在PHP代码最顶部添加加载代码,确保WordPress函数能被调用:
<?php // 根据站点实际路径调整wp-load.php的位置,根目录下直接用此路径 require_once($_SERVER['DOCUMENT_ROOT'] . '/wp-load.php');
如果delete.php在子目录,需修改路径,比如子目录下可写../wp-load.php。
修正语法错误
补全else块的闭合},保证条件判断结构完整。优化登录跳转逻辑
替换硬编码的登录URL,使用WordPress内置的wp_login_url()函数,实现登录后自动返回当前页面的效果,比固定URL更灵活。
完整修复后的代码
<?php // 加载WordPress核心文件 require_once($_SERVER['DOCUMENT_ROOT'] . '/wp-load.php'); if ( is_user_logged_in() ) { // 获取当前用户和站点信息,替换占位符 $current_user = wp_get_current_user(); $username = esc_html($current_user->user_login); $sitename = esc_html(get_bloginfo('name')); echo <<<RGN <form id="plugin_delete_me_shortcode_form" method="post"> <p> WARNING!<br /><br />Are you sure you want to delete user $username from $sitename? </p> <p> <label for="plugin_delete_me_shortcode_password"> Password </label> <input type="password" autocomplete="off" autofocus="autofocus" id="plugin_delete_me_shortcode_password" name="plugin_delete_me_shortcode_password" /> </p> <p><input type="submit" value="Confirm Deletion" /></p> </form> RGN; exit; } else { // 跳转至登录页,登录后自动返回当前页面 wp_redirect(wp_login_url($_SERVER['REQUEST_URI'])); exit; } ?>
额外补充了替换%username%和%sitename%的逻辑,让提示文本显示真实的用户和站点名称,避免占位符残留。
内容的提问来源于stack exchange,提问作者ricky ninia
相关产品推荐
相关产品推荐

