WordPress安装后自动登录

时间:2014-01-10 作者:Balas

我在wordpress中创建了一个产品,在这里我在wp安装期间安装了自定义主题和插件。

在这里之前没问题。但是管理员希望在安装结束时自动登录,而不提示登录,并希望重定向到我希望提供的页面。

有什么帮助吗?

我试图将此代码放在wp admin/install中的wp\\u install()之后。php

        $creds = array();

        $creds[\'user_login\'] = $_POST[\'user_name\'];

        $creds[\'user_password\'] = $_POST[\'admin_password\'];

        $creds[\'remember\'] = true;          

        $user = wp_signon( $creds, false );

        if ( is_wp_error($user) )
            echo $user->get_error_message();                
        wp_redirect(home_url(\'products\'));exit;

2 个回复
SO网友:kaiser

你的问题似乎是你太早就上钩了(除了编辑核心文件的问题之外),所以让我们来看一下wp-admin/install.php:

根本没有挂钩,但在页面末尾,当所有内容都正确呈现时,需要调用wp_print_scripts( \'user-profile\' ). 很高兴在那里我们能找到很多钩子。一个直接位于该函数内部并以函数本身命名的函数:wp_print_scripts. 和其他内部WP_Scripts.

因此,让我们用一个小型自定义插件来尝试一下(未经测试):

<?php
defined( \'ABSPATH\' ) or exit;
/* Plugin Name: (#129229) Auto-Login User after install */

add_action( \'wp_print_scripts\', \'wpse129229LoginAfterInstall\' );
function wpse129229LoginAfterInstall()
{         
    $user = wp_signon( array(
        \'remember\'      => true,
        \'user_login\'    => $_POST[\'user_name\'],
        \'user_password\' => $_POST[\'admin_password\'],
    ), false );

    if ( is_wp_error( $user ) )
        echo $user->get_error_message();                

    exit( wp_redirect( home_url( "products" ) ) );
}
我不确定admin_password 是正确的form 领域id/name. 通常/IIRC WP使用user_password. 其次,用户不会使用登录home_url( "products" ). 您需要使用admin_url() 为此。

最后注意事项:NEVER EVER 编辑核心文件。在任何升级过程中,您都会丢失所有更改。如果它只是关于安装(而不是升级),那么您的方法在某种程度上甚至是有效的(如果您想维护一个WP fork),但如果您想升级的话就不是这样了。

SO网友:Otto

首先,请注意以下内容,而不是编辑核心文件:

wp-admin/install.php 包括wp-admin/includes/upgrade.php 文件,就在顶部wp-content/install.php 文件,并包括它(如果有)。因此,您可以自定义安装。php文件将包含在安装过程中。这很重要,因为wp_install() 函数包装在if ( !function_exists() ) 支票类型。意味着wp_install() 函数本身是“可插入的”wp_install() 中的函数wp-content/install.php, 然后使用您的函数,让您可以随心所欲地定制整个函数,而无需编辑核心。

因此,步骤1:复制现有wp_install() 按原样将功能wp-content/install.php 文件您将修改此函数,而不是编辑核心代码。

对于第二步,您希望自动将生成的用户登录并重定向。幸运的是,您真正需要做的就是设置一个cookie,然后重定向并退出。很容易做到。而不是return array 在函数末尾,执行以下操作:

wp_set_auth_cookie($user_id, true);
wp_safe_redirect(home_url(\'products\'));
exit;
注:未测试。还没试过呢。但它应该会起作用。您可能需要添加错误处理等。

结束

相关推荐

Custom WordPress Installation

我想知道下面的帖子中描述的自定义WordPress安装的方法是否有更新版本。http://wpbits.wordpress.com/2007/08/10/automating-wordpress-customizations-the-installphp-way/