web-dev-qa-db-fra.com

Charger wp_editor via ajax

Duplicate possible:
Comment charger wp_editor () via AJAX/jQuery

Je sais que cela a déjà été demandé, mais on n'a pas répondu de manière complète, précise ou descriptive. Je sais comment charger le wp_editor au chargement de la page comme ceci:

<?php wp_editor( $content, 'bio', $settings = array() );  ?>

Mais cela ne fonctionne pas lors du chargement de l'éditeur via ajax.

Mon plugin charge une liste de joueurs de football. Lorsque l'utilisateur clique sur un joueur, la division wrapper de la page est remplacée par les données de ce joueur spécifique. Une partie de cela doit être une instance de wp_editor.

Le div wrapper est remplacé par le formulaire ci-dessous. Le wp_editor doit être chargé dans la dernière ligne du formulaire.

Cette jQuery remplace le div 'tfb_replace' par la réponse qui, dans ce cas, est un formulaire.

$.post(ajaxurl, data, function(response) {
  $('.tfb_replace').html(response);
});

Et voici le formulaire:

    <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" />&nbsp;&nbsp;&nbsp;
    <input type="button" name="remove" value="Remove Player" class="button-primary" />
    <input type="hidden" name="player_id" value="<?php echo $object->id; ?>" />
</form>
8
moettinger

Ajoutez ceci à votre fichier de plugin: (vous pouvez aussi l'ajouter dans le fichier de fonctions du thème)

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');

Demander Ajax en utilisant cette URL:

[BLOG_ADDRESS]/wp-admin/admin-ajax.php?action=ajax_wp_editor
1
Chester Alan