Mögliches Duplizieren:
Laden von wp_editor () über AJAX/jQuery
Ich weiß, dass dies schon einmal gefragt wurde, aber es wurde nicht vollständig oder genau oder deskriptiv beantwortet. Ich kann den wp_editor beim Laden einer Seite folgendermaßen laden:
<?php wp_editor( $content, 'bio', $settings = array() ); ?>
Das funktioniert aber nicht, wenn der Editor über Ajax geladen wird.
Mein Plugin lädt eine Liste von Fußballspielern. Wenn ein Spieler angeklickt wird, wird das Wrapper-Div auf der Seite durch die Daten für diesen bestimmten Spieler ersetzt. Ein Teil davon muss eine Instanz von wp_editor sein.
Das Wrapper Div wird durch das folgende Formular ersetzt. In der letzten Zeile des Formulars muss der wp_editor geladen sein.
Diese jQuery ersetzt das div 'tfb_replace' durch die Antwort, die in diesem Fall ein Formular ist.
$.post(ajaxurl, data, function(response) {
$('.tfb_replace').html(response);
});
Und hier ist das Formular:
<form method="POST" action="" name="edit_player_form" enctype="multipart/form-data">
<table class="form-table">
<tr valign="top">
<th scope="row"><label for="player_pic">Profile Image</label></th>
<td><input name="player_pic" value="<?php echo $object->player_pic; ?>" /></td>
</tr>
<tr valign="top">
<th scope="row"><label for="player_height">Height</label></th>
<td><input name="player_height" value="<?php echo $object->player_height; ?>" /></td>
</tr>
<tr valign="top">
<th scope="row"><label for="player_weight">Weight</label></th>
<td><input name="player_weight" value="<?php echo $object->player_weight; ?>" /></td>
</tr>
<tr valign="top">
<th scope="row"><label for="player_year">Years in School</label></th>
<td><input name="player_year" value="<?php echo $object->player_year; ?>" /></td>
</tr>
<tr valign="top">
<th scope="row"><label for="player_position">Category</label></th>
<td>
<select name="player_cat">
<option value="<?php echo $object->player_cat; ?>"><?php echo $object->player_cat; ?></option>
<option value="Mayor">Mayor</option>
<option value="Intermedia">Intermedia</option>
<option value="Juvenil">Juvenil</option>
</select>
</td>
</tr>
<tr valign="top">
<th scope="row"><label for="player_year">Bio</label></th>
<td><!-- wp_editor would load here --></td>
</tr>
</table>
<br/>
<input type="button" name="edit" value="Save Edits" class="button-primary" />
<input type="button" name="remove" value="Remove Player" class="button-primary" />
<input type="hidden" name="player_id" value="<?php echo $object->id; ?>" />
</form>
Fügen Sie dies zu Ihrer Plugin-Datei hinzu: (Sie können es auch in die Funktionsdatei des Themas einfügen.)
function ajax_wp_editor()
{
?>
your html form here
<?php
}
//for all users
add_action('wp_ajax_nopriv_ajax_wp_editor', 'ajax_wp_editor');
// for logged in users
add_action('wp_ajax_ajax_wp_editor', 'ajax_wp_editor');
Fordern Sie Ajax über diese URL an:
[BLOG_ADDRESS]/wp-admin/admin-ajax.php?action=ajax_wp_editor