- WordPress :6.7
- Statut : non résolu
- Ce sujet contient 1 réponse, 2 participants et a été mis à jour pour la dernière fois par
momofr@free.fr, le il y a 6 jours et 17 heures.
-
AuteurMessages
-
9 avril 2025 à 20 h 38 min #2487781
Bonjour,
J’essaie desespéremment d’ajouter dans un plugin une nouvelle option dans les « Screen Options » d’un type de post créé pour l’occasion.
Ce type de post a des colonnes spéciales et je voudrais configurer une Screen option, donc un paramètre géré à échelle de l’utilisateur en cours qui change l’apparence du listing edit.php?post_type=custom.
Mais impossible.J’ai eu beau essayer de me faire aider de cette ressource et même des meilleures IA, rien n’y fait. J’arrive bien à ajouter mon option mais pas à la sauvegarder.
En repartant de zéro je me retrouve avec le code ci-dessous :<?php
// Add custom option in Screen Options
function add_address_option_to_screen( $status, $args ) {
// We only want to modify the "edit-product" screen
if ( 'edit' !== $args->base ) {
return $status;
}
// Start the output buffer to inject custom options
ob_start();
?>
<fieldset class="metabox-prefs show-address">
<legend>Winedata PDF version</legend>
<label for="with_address_true">
<input type="radio" name="wp_screen_options[with_address_option]" id="with_address_true" value="true"
<?php checked( get_user_meta( get_current_user_id(), 'with_address_option', true ), 'true' ); ?> />
<?php _e( 'Show Address', 'textdomain' ); ?>
</label>
<label for="with_address_false">
<input type="radio" name="wp_screen_options[with_address_option]" id="with_address_false" value="false"
<?php checked( get_user_meta( get_current_user_id(), 'with_address_option', true ), 'false' ); ?> />
<?php _e( 'Hide Address', 'textdomain' ); ?>
</label>
<!-- Add nonce field to verify the request -->
<input type="hidden" name="wp_screen_options_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wp_screen_options_nonce' ) ); ?>">
</fieldset>
<?php
return ob_get_clean() . $status; // Add the custom fields to the screen options
}
add_filter( 'screen_settings', 'add_address_option_to_screen', 10, 2 );
// Save the selected address_option when the Screen Options form is submitted
function save_address_option_screen_option( $status, $option, $value ) {
error_log('Inside save_address_option_screen_option hook');
// Check if nonce is valid
if ( isset( $_POST['wp_screen_options_nonce'] ) &&
wp_verify_nonce( $_POST['wp_screen_options_nonce'], 'wp_screen_options_nonce' ) ) {
error_log('Nonce is valid');
// Ensure the "with_address_option" is part of the saved screen options
if ( 'with_address_option' === $option && isset( $_POST['wp_screen_options']['with_address_option'] ) ) {
error_log('Option found: ' . $_POST['wp_screen_options']['with_address_option']);
// Save the address_option to user meta (for the current user)
$address_option = sanitize_text_field( $_POST['wp_screen_options']['with_address_option'] );
update_user_meta( get_current_user_id(), 'with_address_option', $address_option );
error_log('Saved address option: ' . $address_option);
return $address_option; // Ensure it returns the updated value
}
}
error_log('No update performed');
return $status;
}
add_filter( 'set-screen-option', 'save_address_option_screen_option', 10, 3 );J’ai également ajouté ce paramètre dans les settings du profil utilisateur et la valeur de cette user_meta est bien récupérée.
Toutefois elle ne se sauvegarde pas et mon code ne trigger même pas save_address_option_screen_option pour une raison qui m’échappe.J’ai écumé la documentation et le code source de WordPress mais ce pan du panel admin a l’air d’avoir été délaissé…
Si vous avez déjà ajouté ce genre d’option merci de m’aider.
Si je pouvais j’aurais ajouté mon propre onglet (comme Screen Options ou Help) mais en fait WordPress n’a même pas de crochet pour cela.12 avril 2025 à 17 h 04 min #2487864Salut, c’est une partie qui m’est inconnue sur WP, as-tu regardé cette vidéo (en anglais) sur ce sujet ?
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.