web-dev-qa-db-fra.com

paramètres wordpress API et structure de tableau d'options

comment obtenez-vous l'API de paramètres pour enregistrer les options qui se trouvent dans une structure de tableau comme celle-ci:

$array = array (
                array(
             'id'=> '1',
             'name'=> 'tom',
             'pageurl'=> 'someurl',
             'notes'=> 'someNotes'
              )
                array(
                 'id'=>'2',
                 'name'=>'harry',
                 'pageurl'=>'someotherurl',
                 'notes'=>'anothernote'
                  ) 
          );

Ce tableau récupère les fichiers ajoutés et supprimés par l'utilisateur. La classe wp_list_table que j'utilise a été configurée de la même manière et je dois pouvoir modifier ces valeurs ultérieurement sans supprimer l'ensemble du jeu de données du tableau que je dois modifier, puis le recréer. J'ai essayé des exemples de codeurs de presse et d'options d'échantillons d'ozh sans succès. J'essaie de mettre à jour le champ de nom dans le tableau de tableaux. La seule raison pour laquelle j'utilise cette structure de tableau est à cause de la table de liste wp.

Sur le point de me tirer les cheveux en essayant de faire fonctionner ça.

Voici ce que j'ai essayé:

add_action('admin_init', 'ozh_sampleoptions_init' );
add_action('admin_menu', 'ozh_sampleoptions_add_page');

// Init plugin options to white list our options
function ozh_sampleoptions_init(){
    register_setting( 'ozh_sampleoptions_options', 'fp_options', 'ozh_sampleoptions_validate' );
}

// Add menu page
function ozh_sampleoptions_add_page() {
    add_options_page('Ozh\'s Sample Options', 'Sample Options', 'manage_options', 'ozh_sampleoptions', 'ozh_sampleoptions_do_page');
}

// Draw the menu page itself
function ozh_sampleoptions_do_page() {
    ?>
    <div class="wrap">
        <h2>Ozh's Sample Options</h2>
        <form method="post" action="options.php">
            <?php settings_fields('ozh_sampleoptions_options'); ?>
            <?php $options = get_option('fp_options'); ?>
            <table class="form-table">

                <tr valign="top"><th scope="row">Tab Name</th>
                    <td><input type="text" name="ozh_sample[name]" size="75" value="<?php echo $options[0]['name']; ?>" /></td>
                </tr>
            </table>
            <p class="submit">
            <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
            </p>
        </form>
    </div>
    <?php   
}

// Sanitize and validate input. Accepts an array, return a sanitized array.
function ozh_sampleoptions_validate($input) {

    // Say our option must be safe text with no HTML tags
    $input[0]['name'] =  wp_filter_nohtml_kses($input['name']);

    return $input;
}
2
kaira

L’API de paramètres attend généralement des données sous la forme key => value. Je suis sûr qu'il est possible de sauvegarder les données d'un tableau à l'aide de l'API Settings, mais cela contourne quelque peu l'objectif de l'API.

Si je comprends bien votre question, vous essayez d'utiliser une option de plug-in et d'utiliser la valeur de cette option pour mettre à jour la classe wp_list_table. L'approche la plus directe pourrait consister à enregistrer une clé unique en tant qu'option de plug-in, puis à renvoyer cette clé unique à un tableau de matrices distinct à utiliser pour étendre wp_list_table.

En d’autres termes, construisez votre tableau de valeurs wp_list_table, peut-être comme suit:

<?php
function plugin_slug_get_wp_list_table_data() {
    $data = array(
        'a' = array(
            'id'=> '1',
            'name'=> 'tom',
            'pageurl'=> 'someurl',
            'notes'=> 'someNotes'
        ),
        'b' = array(
            'id'=> '1',
            'name'=> 'tom',
            'pageurl'=> 'someurl',
            'notes'=> 'someNotes'
        ),
        'c' = array(
            'id'=> '1',
            'name'=> 'tom',
            'pageurl'=> 'someurl',
            'notes'=> 'someNotes'
        ),
        'd' = array(
            'id'=> '1',
            'name'=> 'tom',
            'pageurl'=> 'someurl',
            'notes'=> 'someNotes'
        ),
    );
    return $data;
}
?>

Enregistrez ensuite votre option de plug-in sous le nom 'a', 'b', 'c' ou 'd'.

Ensuite, obtenez votre option:

<?php
$plugin_slug_options = get_option( 'plugin_slug_options' );
$plugin_slug_wp_list_table_setting = $plugin_slug_options['wp_list_table_setting'];
?>

Ensuite, utilisez le paramètre option pour obtenir les données avec lesquelles mettre à jour wp_list_table:

<?php
$plugin_slug_wp_list_table_array = plugin_slug_get_wp_list_table_data();
$plugin_slug_wp_list_table_data = $plugin_slug_wp_list_table_array[$plugin_slug_wp_list_table_setting];
?>

(La manière dont vous effectuez la mise à jour wp_list_table dépend de vous ...)

2
Chip Bennett