Désespéré : comment ajouter des « Screen options » custom ? (Créer un compte)

  • WordPress :6.7
  • Statut : non résolu
2 sujets de 1 à 2 (sur un total de 2)
  • Auteur
    Messages
  • #2487781
    julieng63
    Participant
    Initié WordPress
    2 contributions

    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.

    #2487864
    momofr@free.fr
    Modérateur
    Maître WordPress
    7660 contributions

    Salut, c’est une partie qui m’est inconnue sur WP, as-tu regardé cette vidéo (en anglais) sur ce sujet ?

2 sujets de 1 à 2 (sur un total de 2)
  • Vous devez être connecté pour répondre à ce sujet.