替换WordPress管理员中的user-edit.php页面

时间:2017-12-29 00:52:33

标签: php wordpress wordpress-theming custom-wordpress-pages

我需要在WordPress管理界面中替换用于user-edit.php视图的页面模板。

我不打算更改任何核心文件,但我想创建自己的user-edit.php来代替。

到目前为止,我已尝试创建user-edit.php文件并将其放在我的子主题中。

可以使用自定义插件完成吗?

1 个答案:

答案 0 :(得分:3)

WordPress管理页面并不像主题一样真正使用模板。所以,还没有真正的替代模板。

话虽如此,您可以选择更换默认的WordPress user-edit.php页面。

1)[强力方法]直接用您自己的文件替换核心wp-admin/user-edit.php文件。我知道你已经说过你不想替换核心文件;我只是将其列为此处出现的其他人。显然,这并不理想,因为任何时候更新WordPress都会覆盖您的文件。

2)[服务器重定向方法]您可以在网站的.htaccess文件中添加相应的条目,以将https://yourdomain.tld/wp-admin/user-edit.php的调用重定向到新的网页/文件。也不理想,因为如果您的网站切换到没有替换文件的新主题,则该重定向链接将被破坏。

3)[添加方法]单独保留现有的核心/默认用户菜单,只需添加自己的管理菜单(通过add_menu_page)以包含新页面。然后,只需知道您只需使用新菜单而不是用户菜单。更好,但不理想,因为其他管理页面上指向user-edit.php的任何链接仍指向那里并将管理员用户带到旧/核心页面。

4)[php拦截方法]拦截你主题的php代码中的wp-admin/user-edit.php调用并加载你的替换文件。这可能是最好的方法,虽然不是最简单的方法。而且你必须确保你的替换页面仍然允许任何插件正常运行,也可能使用用户编辑页面过滤器和钩子。

完成#4 [php intercept]:

核心user-edit.php文件的第一件事就是加载wp-admin/admin.php。该文件加载所有相关的管理员资料,并最终将控制权交还给user-edit.php。但是,就在它发生之前,它会激活动作"load-user-edit.php"

因此,在您的主题的functions.php文件中,使用这样的函数拦截请求并重定向到您的文件:

function scottfive_override_user_edit(){
    require_once( get_template_directory() . '/myadminfiles/user-edit-replacement.php' );
    die();
}
add_action( 'load-user-edit.php', 'scottfive_override_user_edit', 1 );

请注意,此方法会替换整个文件及其所有功能和安全性。我建议您查看原始核心user-edit.php并复制身份验证/授权代码,以确保您的文件至少与原始文件一样安全。

快乐的编码! :d