web-dev-qa-db-fra.com

<form> à l'intérieur d'un metabox

J'essaie d'écrire un plugin qui permet à un utilisateur de télécharger une vidéo sur Vimeo via l'API de téléchargement Vimeo.

Afin d'éviter d'essayer de télécharger une vidéo sur un compte d'hébergement potentiellement partagé, puis de là vers Vimeo, j'essaie de télécharger directement vers Vimeo via leur POST availability - https: //developer.vimeo. com/apis/advanced/upload # post

Pour ce faire, je dois placer un formulaire dans une méta-boîte pour un type de message personnalisé appelé "Vimeo", mais WordPress filtre la balise et ses attributs à partir de la source HTML renvoyée. Y a-t-il un moyen d'empêcher cela ou ai-je pris la mauvaise approche? Je crois que je peux avoir une forme dans une situation de forme.

Merci.

4
Stewarty

Ce n'est pas la bonne approche, puisque vous êtes dans une page d'édition (cpt), les métaboxes sont de simples champs groupés qui sont attachés au formulaire et dans votre cas, c'est en fait le navigateur qui filtre les attributs de formulaire de votre métabox et non WordPress puisque vous créent des formulaires imbriqués, ce que vous ne pouvez pas faire.

Une meilleure approche serait de ne pas avoir le formulaire à l'intérieur d'un metabox, mais voici un exemple utilisant l'exemple de l'option thickbox native:

Commencez par ajouter le bouton pour lancer la boîte épaisse:

//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>';
}

Ajouter un formulaire html en dehors du formulaire post ex:

//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
}

Vous devriez obtenir quelque chose comme ça:

  • Le bouton média:

    Upload to vimeo button

  • Le formulaire dans thickbox:

    Upload to vimeo thickbox

5
Bainternet