web-dev-qa-db-fra.com

Bouton d'option de suppression personnalisé dans les paramètres du plug-in

Je voudrais ajouter le bouton Delete à côté de mon option de fichier Upload dans les paramètres de mon plugin.

En ce moment, j'utilise l'API Settings, en utilisant le formulaire ci-dessous.

<form method="post" action="options.php" enctype="multipart/form-data">
    <?php
        settings_fields("mw_options");
        do_settings_sections("mw_options");      
        submit_button(); 
    ?>          
</form>

Cela fonctionne très bien, j'ai environ 10 champs dans le formulaire, l'un d'entre eux est le téléchargement de fichier qui ajoute des pièces jointes à un e-mail de Woocommerce. Tout fonctionne très bien, mais j'aimerais ajouter le bouton Delete à côté du bouton Upload dans mon formulaire afin que je puisse utiliser le hook updated_option ou delete_option, ou quelque chose de plus approprié.

Je ne peux pas comprendre, comment faire cela.

Maintenant, j'utilise mes propres delete_attachment.php et formaction sur le bouton pour faire le travail, mais j'aimerais en faire plus, plus tard, et j'estime qu'il existe un meilleur moyen.

function mw_options_wc_order_attachement_1()
{
    ?>
        <input type="file" name="mw_options_wc_order_attachement_1" id="mw_options_wc_order_attachement_1" value="<?php echo get_option('mw_options_wc_order_attachement_1'); ?>" />
        <?php echo get_option("mw_options_wc_order_attachement_1"); ?>
        <input type="submit" name="mw_options_wc_order_attachement_1" formaction="<?php echo plugins_url( 'delete_attachment.php' , __FILE__ );?>" formmethod="post" value="Delete">
    <?php
}

Comment puis-je créer un autre bouton dans la zone de l'option principale qui exécuterait un script de suppression que j'ai?

1
Mike

J'ai réussi à ajouter un bouton de suppression de cette façon, il peut également être utilisé pour ajouter un bouton de soumission supplémentaire.

Créez un bouton d'envoi avec l'attribut name et array:

function mw_options_wc_order_attachement_1()
{
    ?>
        <input type="file" name="mw_options_wc_order_attachement_1" id="mw_options_wc_order_attachement_1" value="<?php echo get_option('mw_options_wc_order_attachement_1'); ?>" />
        <?php echo get_option("mw_options_wc_order_attachement_1"); ?>
        <input type="submit" name="submit[delete_attachment_1]" class="button button-primary" value="Delete" />
    <?php
}

Enregistrer le paramètre avec la fonction de rappel, mw_options_wc_order_attachement_1_handle est le nom de la fonction dans mon cas.

register_setting("mw_options", "mw_options_wc_order_attachement_1", "mw_options_wc_order_attachement_1_handle");

Définissez la fonction de rappel comme ceci:

function mw_options_wc_order_attachement_1_handle($options)
{

    if (isset($_POST["submit"]))
    {
        $submit_button = $_POST["submit"];

        if (isset($submit_button["delete_attachment_1"])) 
        {
            // delete file
            wp_delete_file('YOUR-FILE-SERVER-PATH');
            return ''; // returns empty option value to settings
        }
    }

 }
1
Mike