web-dev-qa-db-fra.com

Comment configurer les valeurs par défaut pour un plugin?

Quelle est la meilleure façon de configurer les valeurs par défaut pour un plugin? Devrais-je simplement insérer ces valeurs dans la table wp_options?

ET ... si c'est la meilleure façon de s'y prendre, j'ai une autre question. Mes options sont répertoriées dans un groupe qui ressemble actuellement à:

a: 4: {s: 26: "nc_location_drop_down_zoom"; s: 2: "14"; s: 17: "nc_location_width"; s: 3: "200"; s: 29: "nc_location_drop_down_maptype"; s: 7: " feuille de route "; s: 11:" chaîne de texte "; s: 0:" ";}

Est-ce un tableau sérialisé? Comment puis-je faire un insert comme celui-ci dans la table? (J'ai réalisé que c'était plus une question SQL ...)

6
redconservatory

Utilisez l’API Paramètres et enregistrez vos données dans une seule option sous forme de tableau. WordPress sérialise les données pour vous.

1
Milo

Vous devriez faire des valeurs par défaut au moment de l'extraction des données. N'insérez jamais de valeurs par défaut dans la base de données. Les valeurs par défaut sont les valeurs par défaut. Les options de la base de données remplacent les valeurs par défaut.

Comment faire les valeurs par défaut pour un tableau d'options sérialisées:

$defaults = array(
  'default1' => '1',
  'default2' => '2',
);
$options = wp_parse_args(get_option('plugin_options'), $defaults);
14
Otto

Utilisez add_option. Si vous utilisez add_option, les options existantes ne seront pas mises à jour et des vérifications seront effectuées pour vous assurer que vous n’ajoutez pas d’option WordPress protégée.

Voir add_option à developer.wordpress.org

// Activation
function name_plugin_activation(){
    do_action( 'name_plugin_default_options' );
}
register_activation_hook( __FILE__, 'name_plugin_activation' );


// Set default values here
function name_plugin_default_values(){

    // Form settings
    add_option('name_form_to', '[email protected]');
    add_option('name_form_subject', 'New');


}
add_action( 'name_plugin_default_options', 'name_plugin_default_values' );
1
Remzi Cavdar

En plus de la réponse d'Otto.

Si vous avez le tableau d'options multidimensionnelles et que vous souhaitez toujours le fusionner avec le tableau de valeurs par défaut, utilisez la fonction suivante au lieu de wp_parse_args():

<?php
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;
}

Par exemple,

<?php
$defaults = array(
    'setting-1' => array(
        'option-1' => 1,
        'option-2' => 0,
    ),
    'setting-2' => 1
);

// Only variables are passed to the function by reference (Strict Standards warning)
$options = get_option('plugin_options');
$options = meks_wp_parse_args($options, $defaults);

La fonction récursive a été trouvée ici .

0
Max Yudin