wake-up-neo.net

Wie füge ich mit AJAX ein Untermenü hinzu?

Was ich tun möchte, ist, die add_submenu_page() -Funktion in Ajax auf meiner Plugin-Optionsseite zu starten.

Wenn ich auf einen Link "Liga hinzufügen" klicke, möchte ich eine Ajax-Eingabe [Text] anzeigen, die in der Datenbank gespeichert wird, und dann die Untermenüseite mit den eingegebenen Werten hinzufügen.

Ich hoffe auch, den Eintrag sowie die neu erstellte Seite löschen zu können.

3
Rory Rothon

Da Sie nicht davon ausgehen können, dass Sie ohne einen bestimmten Code ein voll funktionsfähiges Beispiel erhalten, zeige ich Ihnen ein grobes WordPress-Setup AJAX:

Gib das alles in functions.php ein:

<?php
add_action('wp_head', 'my_action_javascript');
function my_action_javascript() {
?>
<script type="text/javascript" >
jQuery(document).ready(function($) {
    jQuery.ajax(
        type: 'POST',
        url: <?php echo admin_url('admin-ajax.php'); ?>,
        data: {
            action : 'your_AJAX_call',
            league : $('input#league').val() // get the user input
        },
        success: function( response, textStatus, XMLHttpRequest ) {
            $('ul#menu').append(response);
        }
        error: function( XMLHttpRequest, textStatus, errorThrown ) {
            alert('An error occured');
        }
    );
});
</script>
<?php
}

add_action( 'wp_ajax_nopriv_your_AJAX_call', 'your_AJAX_call' );
add_action( 'wp_ajax_your_AJAX_call', 'your_AJAX_call' );
function your_AJAX_call() {
    $league = $_POST['league'];
    // do sanitization
    // if sanitization is ok:
        // save to DB
        // echo sth like '<li><a href="new-league">New League</a></li>'
    exit;  // won't work without!
}

Ich empfehle, ein json-codiertes Array zurückzugeben, damit Sie detailliertere Informationen bereitstellen können. Das heißt Wenn die Desinfektion fehlschlägt, weil sie zu kurz ist:

// Your sanitization logic here
$arr = array ('success'=>false,'error'=>'Length must be at least 3 Characters');
echo json_encode($arr);

http://php.net/manual/de/function.json-encode.php

Dann in Ihrer response Funktion des Ajax-Aufrufs:

var response = jQuery.parseJSON(response);
alert('An error occured: ' + response.error);

http://api.jquery.com/jQuery.parseJSON/

Hier ist eine gute Zusammenfassung über die Verwendung von Ajax in WordPress:

http://www.garyc40.com/2010/03/5-tips-for-using-ajax-in-wordpress/

BEARBEITEN:

Völlig vergessen:

add_submenu_page() funktioniert nicht, da die Seite zu diesem Zeitpunkt bereits gerendert wurde.

1
xsonic