web-dev-qa-db-ja.com

プラグインのアンインストール時にデータを削除するかどうかを尋問するポップアップ

Wp_optionsにいくつかのオプションを作成するプラグインがありますが、カスタム投稿タイプも作成し、その投稿タイプを設定するために使用されます。インストール時にはwp_optionsのデータを削除するのが理にかなっていますが、移入された投稿タイプに関しては、ユーザーがそのデータを保持するかどうかを選択するオプションがあるはずです。

理想的には、彼がアンインストールリンクをクリックしたときに、プラグインファイルとオプションだけを削除するか、すべてを削除するかを尋ねるポップアップを表示します。どのように私はそのようなポップアップをすることができますか?

4
urok93

これに似たものはどうでしょうか。

function wpse65611_script() {
    wp_enqueue_style( 'wp-pointer' );
    wp_enqueue_script( 'wp-pointer' );
    wp_enqueue_script( 'utils' ); // for user settings
?>
    <script type="text/javascript">
    jQuery('#embed-github-Gist .delete a').click(function(){
            jQuery('#embed-github-Gist .delete a').pointer({
                content: '<h3>Delete this or delete everything?</h3><p><a id="this" class="primary button" href="url1">Delete data</a> <a id="everything" class="button" href="'+jQuery('#embed-github-Gist .delete a').attr('href')+'">Delete plugin</a></p>',
                position: {
                    my: 'left top',
                    at: 'center bottom',
                    offset: '-1 0'
                },
                close: function() {
                    //
                }
            }).pointer('open');
return false;
        });
    </script><?php
}
add_action( 'admin_footer', 'wpse65611_script' );

これは次のようになります。

enter image description here

Url1を、データだけを削除するURLに置き換えます。

これをプラグインに入れてプラグインが無効になっていると動作しません。別のプラグインやテーマに入れてもうまくいきますが、悪い習慣になります

埋め込みgithub GistプラグインのIDも自分のものに置き換えてください

4
Tom J Nowell
function wpse65611_confirm_uninstall()
{
    ?>
    <form>
        <input type="button" onclick="wpse65611_confirmation()" value="Delete Data?">
    </form>
    <?php
}

function wpse65611_script()
{
<script type="text/javascript">
    function wpse65611_confirmation()
    {
        var answer = confirm( "Delete Data?" );
        if ( answer )
        {
            window.location = "<?php admin_url( 'plugins.php?delete=data' ); ?>";
        }
        else
        {
            window.location = "<?php admin_url( 'plugins.php' ); ?>";
        }
    }
</script>
}
add_action( 'admin_footer', 'wpse65611_confirmation' );
1
kaiser