将默认设置添加到主题我的登录插件

时间:2018-02-08 作者:Jess

我正在尝试用默认设置更新名为Theme My Login的插件。问题是更新只应用于数据库。当我登录WordPress时,我看不到更新的选项。按照默认值的说明,我在update\\u选项之前使用了get\\u选项。

我甚至在激活时更新了插件。我从一个similar question.

请检查功能,我不知道我可能做错了什么或遗漏了什么。

//Theme My Login Custom Settings
function nls_tml_default_activation_actions() {
    do_action( \'nls_tml_default_activation\' );
}

register_activation_hook( __FILE__, \'nls_tml_default_activation_actions\');
add_action( \'nls_tml_default_activation\', \'nls_tml_default_settings\' );


function nls_tml_default_settings() {

    get_option(\'theme_my_login\');
    update_option(\'theme_my_login\', $nlstml);
    $nlstml = array (
        \'option_value\' => \'a:4:{s:10:"enable_css";b:1;s:10:"login_type";s:7:"default";s:14:"active_modules";a:6:{i:0;s:37:"custom-passwords/custom-passwords.php";i:1;s:39:"custom-user-links/custom-user-links.php";i:2;s:23:"recaptcha/recaptcha.php";i:3;s:21:"security/security.php";i:4;s:35:"themed-profiles/themed-profiles.php";i:5;s:35:"user-moderation/user-moderation.php";}s:7:"version";s:6:"6.4.10";}\',
        \'autoload\' => \'yes\',
    );

    get_option(\'theme_my_login_recaptcha\');
    update_option(\'theme_my_login_recaptcha\', $nlsrecap);
    $nlsrecap = array (
        \'option_value\' => \'a:3:{s:10:"public_key";s:7:"sitekey";s:11:"private_key";s:9:"secretkey";s:5:"theme";s:5:"light";}\',
        \'autoload\' => \'yes\',
    );

    get_option(\'theme_my_login_security\');
    update_option(\'theme_my_login_security\', $nlssecurity);
    $nlssecurity = array (
        \'option_value\' => \'a:3:{s:12:"private_site";b:0;s:13:"private_login";b:1;s:12:"failed_login";a:5:{s:9:"threshold";i:5;s:18:"threshold_duration";i:1;s:23:"threshold_duration_unit";s:4:"hour";s:16:"lockout_duration";i:24;s:21:"lockout_duration_unit";s:4:"hour";}}\',
        \'autoload\' => \'yes\',
    );

    get_option(\'theme_my_login_themed_profiles\');
    update_option(\'theme_my_login_themed_profiles\', $nlsprofiles);
    $nlsprofiles = array (
        \'option_value\' => \'a:7:{s:13:"administrator";a:2:{s:13:"theme_profile";b:1;s:14:"restrict_admin";b:0;}s:6:"editor";a:2:{s:13:"theme_profile";b:1;s:14:"restrict_admin";b:1;}s:6:"author";a:2:{s:13:"theme_profile";b:1;s:14:"restrict_admin";b:1;}s:11:"contributor";a:2:{s:13:"theme_profile";b:1;s:14:"restrict_admin";b:1;}s:10:"subscriber";a:2:{s:13:"theme_profile";b:1;s:14:"restrict_admin";b:1;}s:13:"wpseo_manager";a:2:{s:13:"theme_profile";b:1;s:14:"restrict_admin";b:1;}s:12:"wpseo_editor";a:2:{s:13:"theme_profile";b:1;s:14:"restrict_admin";b:1;}}\',
        \'autoload\' => \'yes\',
    );

  get_option(\'theme_my_login_moderation\');
  update_option(\'theme_my_login_moderation\', $nlsmoderation);
    $nlsmoderation = array (
        \'option_value\' => \'a:1:{s:4:"type";s:5:"admin";}\',
        \'autoload\' => \'yes\',
    );
}
下面是我基于similar answer 作者@Otto:

//Theme My Login Custom Settings
function meks_wp_parse_args( &$a, $b ) {
    $a = (array) $a;
    $b = (array) $b;
    $result = $b;
    foreach ( $a as $k => &$v ) {
        if ( is_array( $v ) && isset( $result[ $k ] ) ) {
            $result[ $k ] = meks_wp_parse_args( $v, $result[ $k ] );
        } else {
            $result[ $k ] = $v;
        }
    }
    return $result;
}


function nls_tml_default_activation_actions() {
    do_action( \'nls_tml_default_activation\' );
}

register_activation_hook( __FILE__, \'nls_tml_default_activation_actions\');
add_action( \'nls_tml_default_activation\', \'nls_tml_default_settings\' );

function nls_tml_default_settings() {
    $nls_tml_defaults = array(
        \'theme_my_login\' => array(
            \'option_value\' => \'a:4:{s:10:"enable_css";b:1;s:10:"login_type";s:7:"default";s:14:"active_modules";a:6:{i:0;s:37:"custom-passwords/custom-passwords.php";i:1;s:39:"custom-user-links/custom-user-links.php";i:2;s:23:"recaptcha/recaptcha.php";i:3;s:21:"security/security.php";i:4;s:35:"themed-profiles/themed-profiles.php";i:5;s:35:"user-moderation/user-moderation.php";}s:7:"version";s:6:"6.4.10";}\',
            \'autoload\' => \'yes\',
        ),
        \'theme_my_login_recaptcha\' => array(
            \'option_value\' => \'a:3:{s:10:"public_key";s:7:"sitekey";s:11:"private_key";s:9:"secretkey";s:5:"theme";s:5:"light";}\',
            \'autoload\' => \'yes\',
        ),
        \'theme_my_login_security\' => array(
            \'option_value\' => \'a:3:{s:12:"private_site";b:0;s:13:"private_login";b:1;s:12:"failed_login";a:5:{s:9:"threshold";i:5;s:18:"threshold_duration";i:1;s:23:"threshold_duration_unit";s:4:"hour";s:16:"lockout_duration";i:24;s:21:"lockout_duration_unit";s:4:"hour";}}\',
            \'autoload\' => \'yes\',
        ),
        \'theme_my_login_themed_profiles\' => array(
            \'option_value\' => \'a:7:{s:13:"administrator";a:2:{s:13:"theme_profile";b:1;s:14:"restrict_admin";b:0;}s:6:"editor";a:2:{s:13:"theme_profile";b:1;s:14:"restrict_admin";b:1;}s:6:"author";a:2:{s:13:"theme_profile";b:1;s:14:"restrict_admin";b:1;}s:11:"contributor";a:2:{s:13:"theme_profile";b:1;s:14:"restrict_admin";b:1;}s:10:"subscriber";a:2:{s:13:"theme_profile";b:1;s:14:"restrict_admin";b:1;}s:13:"wpseo_manager";a:2:{s:13:"theme_profile";b:1;s:14:"restrict_admin";b:1;}s:12:"wpseo_editor";a:2:{s:13:"theme_profile";b:1;s:14:"restrict_admin";b:1;}}\',
            \'autoload\' => \'yes\',
        ),
        \'theme_my_login_moderation\' => array(
            \'option_value\' => \'a:1:{s:4:"type";s:5:"admin";}\',
            \'autoload\' => \'yes\',
        )
    );

    // Only variables are passed to the function by reference (Strict Standards warning)
    $nls_options = get_option(\'plugin_options\');
    $nls_options = meks_wp_parse_args($nls_options, $nls_tml_defaults);
}

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

数据没有完全取消序列化,并且没有正确地制作为一个不必要使用的多维数组wp\\u parse\\u args()不必要地使用了get\\u option()。

function nls_tml_default_settings() {
$nlstml = array(
        \'enable_css\'     => 1,
        \'login_type\'     => \'default\',
        \'active_modules\' => array(
            \'custom-passwords/custom-passwords.php\',
            \'custom-user-links/custom-user-links.php\',
            \'recaptcha/recaptcha.php\',
            \'security/security.php\',
            \'themed-profiles/themed-profiles.php\',
            \'user-moderation/user-moderation.php\',
        ),
        \'version\'        => \'6.4.10\',
    );
    update_option( \'theme_my_login\', $nlstml );

$nlsrecap = array(
    \'public_key\'  => \'sitekey\',
    \'private_key\' => \'secretkey\',
    \'theme\'       => \'light\',
);
update_option( \'theme_my_login_recaptcha\', $nlsrecap );

$nlssecurity = array(
    \'private_site\'  => \'\',
    \'private_login\' => 1,
    \'failed_login\'  => array(
        \'threshold\'               => 5,
        \'threshold_duration\'      => 1,
        \'threshold_duration_unit\' => \'hour\',
        \'lockout_duration\'        => 24,
        \'lockout_duration_unit\'   => \'hour\',
    ),
);
update_option( \'theme_my_login_security\', $nlssecurity );

$nlsprofiles = array(
    \'administrator\' => array(
        \'theme_profile\'  => 1,
        \'restrict_admin\' => \'\',
    ),
    \'editor\'        => array(
        \'theme_profile\'  => 1,
        \'restrict_admin\' => 1,
    ),
    \'author\'        => array(
        \'theme_profile\'  => 1,
        \'restrict_admin\' => 1,
    ),
    \'contributor\'   => array(
        \'theme_profile\'  => 1,
        \'restrict_admin\' => 1,
    ),
    \'subscriber\'    => array(
        \'theme_profile\'  => 1,
        \'restrict_admin\' => 1,
    ),
    \'wpseo_manager\' => array(
        \'theme_profile\'  => 1,
        \'restrict_admin\' => 1,
    ),
    \'wpseo_editor\'  => array(
        \'theme_profile\'  => 1,
        \'restrict_admin\' => 1,
    ),
);
update_option( \'theme_my_login_themed_profiles\', $nlsprofiles );

$nlsmoderation = array(
    \'type\' => \'admin\',
);
    update_option( \'theme_my_login_moderation\', $nlsmoderation );

}
register\\u activation\\u hook(WP\\u PLUGIN\\u DIR./主题我的登录/主题我的登录.php”,“nls\\u tml\\u default\\u settings”);

结束

相关推荐

初学者问题:通过管理Web界面访问Functions.php以导入自定义帖子类型?

是否可以访问这些功能。php文件仅仅使用管理web界面?我正在尝试访问以前创建的(手动编码的)自定义帖子类型,我不得不跳过很多障碍,因为我无法访问函数中的代码。php文件。我已经浏览了很多帮助页面,但建议的步骤似乎总是涉及到函数。php文件(我无法访问)或使用插件中的导入/导出工具,该插件首先创建了自定义帖子类型(据我所知,没有使用任何插件)。这似乎是一个非常基本的问题,但我一辈子都想不出来。任何帮助都将不胜感激!