web-dev-qa-db-ja.com

メタフォーム内の<form>

ユーザーがVimeoアップロードAPIを介してVimeoにビデオをアップロードできるようにするプラグインを作成しようとしています。

共有している可能性のあるホスティングアカウントにビデオをアップロードし、そこからVimeoにアップロードしようとしないように、POST availability - https://developer.vimeoを介して直接Vimeoにアップロードしようとしています。 com/apis/advanced/upload#post

これを行うには、 'Vimeo'というカスタム投稿タイプのメタボックスの内側にフォームを配置する必要がありますが、wordPressはタグをフィルタリングしており、返されたHTMLソースの属性です。これを防ぐ方法はありますか、それとも私は間違ったアプローチを取っていますか?私はフォームの状況の中にフォームがあるかもしれないと思います。

ありがとう。

4
Stewarty

あなたが投稿(cpt)編集ページにいるのでメタボックスは投稿フォームに添付される単純にグループ化されたフィールドであり、あなたの場合あなたのメタボックスのフォーム属性をフィルタリングしているのは実際にブラウザです入れ子になったフォームを作成していますが、これはできないことです。

より良い方法は、メタボックスの内側に形式を持たないことですが、ここでは、ネイティブthickboxを使った例を示します。

最初にthickboxを起動するためのボタンを追加します。

//add the button to lanch the thickbox
add_action( 'media_buttons','add_vimeo_upload_button',100);

function add_vimeo_upload_button(){

    global $pagenow,$typenow;   

    if (!in_array( $pagenow, array( 'post.php', 'post-new.php' ) ))
        return;
    echo '<a href="#TB_inline?height=155&width=300&inlineId=vimeo_upload" class="thickbox"><img src="http://i.imgur.com/5hyoa.png" alt="Upload to vimeo"></a>';
}

投稿フォームexの外にフォームhtmlを追加します。

//add form html outside post form
add_filter('admin_footer','vimeo_upload_form');

function vimeo_upload_form(){
    global $pagenow,$typenow;   
    if (!in_array( $pagenow, array( 'post.php', 'post-new.php' )))
        return;

//once we get here we are on the right page so we echo form html:
?>
<div id="vimeo_upload" style="display:none">
    <form method="POST" action="vimeo/url">
        <p><label>Upload video to Vimeo</label>
            <input type="file" name="" value="" placeholder=""></p>
        <p><input type="submit" name="" value="upload"></p>
    </form>
</div>
<?php
}

あなたはこのようなものを得るべきです:

  • メディアボタン:

    Upload to vimeo button

  • Thickboxのフォーム:

    Upload to vimeo thickbox

5
Bainternet