web-dev-qa-db-ja.com

プラグイン設定のカスタム削除オプションボタン

私のプラグイン設定の私のファイルDeleteオプションの隣にUploadボタンを追加したいです。

現時点では、以下のフォームを使用してSettings APIを使用しています。

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

それは素晴らしい作品、私はフォームに約10のフィールドがあり、それらの一つはWoocommerceの電子メールに添付ファイルを追加するファイルのアップロードです。すべてうまくいきますが、フォーム内のDeleteボタンの横にUploadボタンを追加したいので、updated_optionまたはdelete_optionフック、またはもっと適したものを使用できます。

どうすればよいのかわかりません。

今私は自分のdelete_attachment.phpとformactionを使って仕事を終わらせていますが、後でもっとやりたいのですが、もっと良い方法があると思います。

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
}

どのように私は私が持っているいくつかの削除スクリプトを実行するメインオプションの領域内に別のボタンを作成することができますか?

1
Mike

私はこの方法で削除ボタンを追加することに成功しました、それはまた追加の送信ボタンを追加するために使用されるかもしれません。

名前と配列属性で送信ボタンを作成します。

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
}

コールバック関数で設定を登録する、私の場合はmw_options_wc_order_attachement_1_handleが関数の名前です。

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

コールバック関数を次のようにします。

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