web-dev-qa-db-ja.com

テーマMy Loginプラグインへのデフォルト設定の追加

Theme My Loginというプラグインをデフォルト設定で更新しようとしています。問題は、更新がデータベースにのみ適用されることです。 WordPressにログインしても、オプションが更新されていません。デフォルト値の指示に従って、update_optionの前にget_optionを使用しました。

私はアクティベーションの際にプラグインを更新しさえしました。私は 同じような質問 から答えを得ました。

機能を見直してください、私は私がおそらく間違っていたり行方不明になっている可能性があるかわからない。

//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',
    );
}

@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
Jess
  1. データは完全にシリアル化されておらず、多次元配列として正しく作成されていません
  2. wp_parse_args()が不必要に使用されました。
  3. get_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_activation_hook(WP_PLUGIN_DIR。 '/theme-my-login/theme-my-login.php'、 'nls_tml_default_settings');

1
Jess