如何克隆wp-admin并创建一个由您的代码控制的新仪表板?

时间:2015-01-29 作者:Ahmad Awais

假设我想为WordPress创建一个新的管理面板。它应该和我们现在的那个分开。你觉得我该怎么开始?

我想为管理员构建/wp admin/从头开始。这意味着,新的管理面板应该拥有/wp admin/has的所有内容。为什么需要构建新面板?因为现在的情况一直在变化,我所做的需要一个在我控制下的区域,而不是每次WP更新都会改变,但我会在我想要的时候更新它。

总结:我想构建根目录。com/dashboard/which have everything present at root。com/wp管理员/

你建议我怎么开始?要使一个全新的WordPress管理面板工作,需要什么。我应该查看哪些文件、权限、会话等。期待你们的指点。

2 个回复
最合适的回答,由SO网友:kaiser 整理而成

事实上WP API (也被命名为WP REST API或WP JSON API就是为了实现这一目标(除了其他目标)。您可以在repoon GitHub.

“API”主要通过以下方式提供数据访问和(CRUD操作)GETPOST 请求运行到/wp-json/ 请求/URi。您可以获取几乎所有内容的帖子、帖子集、用户、媒体、评论和元数据。你得不到的东西是导入器和其他“工具”、仪表板小部件、主题或插件激活等。如果插件存在,插件必须添加自己的响应,或者你必须自己编写适配器。

该插件旨在成为下一个版本的WP核心的一部分。目前还没有达到这种程度,但发展仍在继续。

然而,要为~/wp-admin, 您只需注册一个自定义端点,然后尝试在那里构建自己的(JavaScript)应用程序。在interwebs中,您会发现许多预先制作的管理界面框架(大多构建在Twitters Bootstrap、Foundation等基础之上),这些框架应该允许您在一到两天内构建一个非常粗糙的原型,其中包含大多数管理内容(取决于您的知识):

// Adds the \\WP_Rewrite endpoint
add_action( \'init\', function()
{
    add_rewrite_endpoint( \'custom-route\', EP_NONE );
} );

// Adds your identifier for queries
add_filter( \'query_vars\', function( $vars )
{
    $vars[] = \'custom-admin-identifier\';
    return $vars;
} );
确保访问“管理”>“选项”>“永久链接”页面,然后刷新重写规则,或者注册一个激活或停用回调,以包装flush_rewrite_rules().

那么你应该可以https://example.com/custom-route 在那里你可以做任何你喜欢的事。如果要在此处加载自定义模板,请跳到template_redirect 并加载它们:

add_filter( \'template_redirect\', function( $template )
{
    # another option would to check:
    # array_key_exists( \'custom-admin-identifier\', $GLOBALS[\'wp_query\']->query_vars )

    if ( get_query_var( \'custom-admin-identifier\' ) )
        return plugin_dir_path( __FILE__ ).\'templates/index.php\';

    return $template;
} );
将加载templates/index.php 从你的插件和服务。

SO网友:Mark Kaplun

您可以通过添加自己的管理屏幕,同时从菜单中删除原来的屏幕来实现。你很可能仍然想让管理员看到原来的屏幕,除非你真的想用完全相同的屏幕来替换整个管理员,正如评论中所有的好人所说的那样,这是很多很多工作。

结束

相关推荐

将网站从本地主机上传到实时服务器后,wp-admin的空白页面

我最近将站点从localhost移动到了实时服务器。当我尝试访问wp-admin 页面我一直得到空白页面,没有显示错误,尽管WP_DEBUG 是true. 当我打开wp-login.php, 我确实获得了登录屏幕,但无法登录并出现以下错误:错误:浏览器阻止或不支持Cookie。您必须启用Cookie才能使用WordPress我在每次<?php 在?>. 我删除了所有空白,但没有成功。请帮帮我