Je ne suis pas bon avec PHP. Je viens de créer une page d’options d’administrateur pour WordPress et cela fonctionne bien:
// Admin Menu
add_action('admin_menu', 'my_cool_plugin_create_menu');
function my_cool_plugin_create_menu() {
$parent_slug = 'test-slug';
$capability = 'administrator';
// sub menus
add_submenu_page( $parent_slug, 'Test', 'Test', $capability, 'test', 'hp_settings_page');
//call register settings function
add_action( 'admin_init', 'cm_register_settings' );
}
function cm_register_settings() {
// title
register_setting(
'mytheme_group', // Option group
'mytheme_title', // Option name
'admin_options_sanitize_text_1' //sanitize callback
);
// IDs
register_setting(
'mytheme_group',
'mytheme_ids',
'admin_options_sanitize_text_2'
);
}
// Admin Page
function hp_settings_page() { ?>
<div class="wrap">
<h2>Test</h2>
<form method="post" action="options.php">
<?php settings_fields( 'mytheme_group' ); ?>
<?php do_settings_sections( 'mytheme_group' ); ?>
<table class="form-table">
<tr>
<th scope="row">Title</th>
<td>
<textarea name="mytheme_title" rows="10" cols="100"><?php echo get_option('mytheme_title'); ?></textarea>
</td>
</tr>
<tr>
<th scope="row">IDs</th>
<td>
<textarea name="mytheme_ids" rows="10" cols="100"><?php echo get_option('mytheme_ids'); ?></textarea>
</td>
</tr>
</table>
<?php submit_button(); ?>
</form>
</div><?php
}
// sanitize 1
function admin_options_sanitize_text_1($input) {
$new_input = sanitize_text_field( $input );
return $new_input;
}
// sanitize 2
function admin_options_sanitize_text_2($input) {
$new_input = preg_replace("/[^0-9\,]/", "", $input );
return $new_input;
}
Cela crée deux lignes dans la base de données et je peux afficher les valeurs comme ceci:
echo get_option('mytheme_ids');
echo get_option('mytheme_title');
Quelles modifications dois-je apporter à ce code pour qu'il soit enregistré dans une ligne de la base de données sous forme de tableau? Donc, je peux alors afficher les valeurs comme ceci:
$options = get_option('mytheme_options');
echo = $options['ids'];
echo = $options['title'];
Toute aide appréciée.
Vous devez uniquement enregistrer un paramètre, puis simplement modifier vos entrées de formulaire pour enregistrer les valeurs dans un tableau. Voici un exemple d’enregistrement du paramètre:
register_setting(
'mytheme_settings',
'mytheme_settings',
'admin_options_sanitize'
);
$mytheme_settings = get_option( 'mytheme_settings' );
et le balisage de champ:
<textarea name="mytheme_settings[title]">
<?php echo esc_textarea( $mytheme_settings['title'] ); ?>
</textarea>
Vous aurez également besoin de combiner vos fonctions de nettoyage, en les modifiant pour qu'elles fonctionnent avec les valeurs du nouveau tableau.