2

プラグイン オプションを保存するための 2 つのフォーム (1 つのプラグイン ページ) を用意し、各フォームを別々に送信することは可能ですか?

1 つのフォームを使用するのは非常に簡単です。たとえば、プラグイン ページ (ダッシュボード内) には、これを含めることができます (最小):

<form action="options.php" method="post" >
    <?php settings_fields( 'my-settings' ); ?>
    <?php do_settings_sections( 'my-settings' ); ?>

    //more input fields

    <?php submit_button(); ?>
</form>

オプションを保存する場合、これは問題なく機能します。しかし、同じプラグインオプションページを使用して、このような2つのフォームを持つことは可能ですか?

現在、別のフォームを作成して送信を押すと、(送信ボタンをクリックした) 1 つだけでなく、これらの両方のフォームが送信されます。

何か案は?

4

1 に答える 1

1

このアプローチを取る代わりに、代わりに ajax を使用してこれを行います。実装が簡単で、プラグインに Web 2.0 の雰囲気を与えることができます。あなたの場合、あなたがしていることをやろうとするよりも、実際には ajax アプローチを実装する方が簡単です。ここから始めましょう。

<?php
add_action('admin_print_scripts', 'my_action_javascript');

function my_action_javascript() {
?>
<script type="text/javascript" >
jQuery(document).ready(function($) {

    var data = {
        action: 'my_action',
        whatever: 1234
    };

    // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
    jQuery.post(ajaxurl, data, function(response) {
        alert('Got this from the server: ' + response);
    });
});
</script>
<?php
}

次に、次のようにリクエストを処理できます。

<?php 

add_action('wp_ajax_my_action', 'my_action_callback');

function my_action_callback() {
    global $wpdb; // this is how you get access to the database

    $whatever = intval( $_POST['whatever'] );

    $whatever += 10;

        echo $whatever;

    die(); // this is required to return a proper result
}
于 2013-03-22T00:11:08.417 に答える