web-dev-qa-db-ja.com

Ajax経由でwp_editorをロードする

可能な重複:
AJAXによるwp_editor()のロード方法/ jQuery

私はこれが以前に尋ねられたことを知っています、しかしそれは完全にまたは正確にまたは記述的に答えられていません。私はこのようにページのロード時にwp_editorをロードする方法を知っています。

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

しかし、Ajaxを介してエディターをロードしてもそれは機能しません。

私のプラグインはサッカー選手のリストをロードします。プレーヤーがクリックされると、ページ上のラッパーdivがその特定のプレーヤーのデータに置き換えられます。その一部はwp_editorのインスタンスである必要があります。

ラッパーdivは以下の形式に置き換えられます。フォームの最後の行には、wp_editorをロードする必要があります。

このjQueryは 'tfb_replace' divをこの場合はフォームであるレスポンスに置き換えます。

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

そしてここにフォームがあります:

    <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

これをあなたのプラグインファイルに追加してください:(あなたはそれをテーマの関数ファイルに追加することもできます)

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

このURLを使用してAjaxをリクエストしてください。

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