仅使用WordPress身份验证

时间:2016-08-23 作者:Irina

我想为我的WP站点的用户做一个小游戏。游戏本身将只使用WP的身份验证系统,但其所有其他逻辑都是完全外部的。

现在,如果我使用带有自定义模板(嵌入游戏的PHP脚本)的标准WordPress页面,它会加载,但对我的用户来说加载速度太慢。我的游戏脚本使用与WP相同的数据库,速度很快。对于测试,我关闭了它(只剩下测试输出),但即使是WP中的这个“空”页面也太慢了。

是否可以完全绕过WordPress(即放弃模板系统和除验证流之外的所有内容),直接加载我的游戏?我的第一个猜测是在我的站点安装的根目录中托管一个单独的脚本,但我不知道如何仅使用WordPress的身份验证组件-是否可以以这种方式仅使用WordPress引擎中的一个组件?

也许有另一种方法可以加快托管游戏脚本的页面的速度。。。

3 个回复
SO网友:bueltge

不确定,但目前在我脑海中的第一个解决方案。您需要WordPress提供的数据进行身份验证吗。如果您包括wp-load.php 您可以访问WordPress及其功能,也可以访问identifier。但是作为静态路径包含的文件并不是很好和可靠。

define( \'WP_USE_THEMES\', FALSE );
require( $_SERVER[\'DOCUMENT_ROOT\'] . \'/wp-load.php\' );
查询和重定向您可以使用自定义值更改查询,如果该值存在,您可以通过挂钩重定向到游戏。在此重定向之后,您可以访问所有wp功能,还可以检查用户。这个想法只适用于前端,没有解决方案来更改后端的页面,只是作为提示。

下面的源代码只是一个示例,它使用自定义字符串来增强查询的标识符,并重定向到自定义代码。

add_filter( \'query_vars\', \'fb_plugin_add_trigger\', 10, 1 );
function fb_plugin_add_trigger( $vars ) {

    $vars[] = \'fb_plugin_trigger\';
    return $vars;
}

add_action(\'template_redirect\', \'fb_plugin_trigger_check\');
function fb_plugin_trigger_check() {

    if ( (int) get_query_var(\'fb_plugin_trigger\') === 1 ) {

                // Here is your custom code.
            exit();
    }
}
此触发器的URL如下所示example.com/?fb_plugin_trigger=1.

自定义端点也是您应该尝试的选项。添加一个custom endpoint.

add_action( \'init\', \'fb_my_endpoint\' );
function fb_my_endpoint() {

    add_rewrite_endpoint( \'fb_plugin_trigger\', EP_ROOT );
}
在此之后,您将在url中找到值,如example.com/fb_plugin_trigger/.

小提示,在添加端点后刷新重写规则。还有一个提示,如果不使用永久链接,请使用函数add_query_arg() 将url中的参数添加到标识符。

现在,您还可以在查询中解析此值并包含游戏源代码。

add_action( \'parse_query\', \'fb_parse_query\' );
function fb_parse_query( $query ) {

    if ( isset( $query->query_vars[\'my_api\'] ) ) {
        include( plugin_dir_path( __FILE__ ) . \'game/index.php\');
        exit;
    }
}

SO网友:Jeremy Ross

我认为导致速度减慢的原因可能与WordPress正在wp\\u head()中加载的所有脚本有关。如果您正在运行任意数量的插件,或者任何呈现阻塞的js/css,您将看到巨大的性能损失。

尝试加载自定义头文件,如header mygame。php并替换get_header() 在模板文件中,使用get_header(\'mygame\').

在标题mygame中。php,删除wp\\u head()和运行游戏不需要的任何其他内容。仅使用手动添加所需的依赖项<script><link> 标签。

你也可以这样做get_footer() 因为WordPress也可能将脚本排队。

显然,这并不是以“WordPress方式”将资产排队,但似乎WordPress方式已经被绕过,所以。。。

SO网友:Sunny Luthra

以下是使用WP进行身份验证时可以遵循的步骤。

在根目录中为代码创建一个单独的文件夹require_once ABSPATH . \'wp-settings.php\';

function i_need_wp() {  
    global $table_prefix;
    require_once ABSPATH . \'wp-settings.php\';
}
致电i_need_wp() 在使用WP身份验证之前。

相关推荐

Child Theme Performance

我在这里和其他地方读过很多关于创建子主题的讨论,这是基于其他现有主题创建主题的推荐方法。我想知道与创建非儿童主题相比,这种方法可能存在的性能劣势。似乎父子主题方法必须处理加载比单个主题多得多的文件,除非我在法典解释中遗漏了什么。如果是这样的话,它必须降低加载速度,可能会显著降低加载速度。如果有人能为我澄清这一点,我将不胜感激。