web-dev-qa-db-ja.com

シックボックスハッキング - フィールドの削除

デフォルト(大きくて見苦しい)Thickbox

私はこのThickboxのページがどう見えるか嫌いです、私はほとんどすべてのこれらの設定フィールドを使用しないので、少なくともテーマオプションとして画像をアップロードしているページでそれらを取り除くことにしました。 enter image description here

(非常に)シンプルなThickbox

attachment_fields_to_editmedia_upload_tabs filtersを使用すると、見やすくなりました。 enter image description here

あなたがそれをする方法を考えているならば(これらのフィルタ/フックはあまり説明されていません)、ここにコードがあります:

function thickbox_fields($form_fields, $post){
    unset(
       $form_fields['post_title'], //disables "Title" field and so forth...
       $form_fields['url'] );
       $form_fields['image_alt'], 
       $form_fields['post_excerpt'], 
       $form_fields['post_content'], 
       $form_fields['align'], 
       $form_fields['image-size'], 
    );

    return $form_fields;
}

function thickbox_upload_init(){
    add_filter('attachment_fields_to_edit', 'thickbox_fields', 10, 2);
}

add_action('admin_init', 'thickbox_upload_init');

トラブル

残念ながら、image-sizeフィールドとurlフィールドを削除した後、その値を目的の内容で上書きする方法がわかりません(この場合、urlとimage-sizeは常に "full"に設定されています)。

このシンプルで強力なチュートリアル に基づいて、管理ページで次のコードを使ってアップロードしています。

jQuery(document).ready(function() {

jQuery('#upload_image_button').click(function() {
 formfield = jQuery('#upload_image').attr('name');
 tb_show('', 'media-upload.php?type=image&TB_iframe=true');
 return false;
});

window.send_to_editor = function(html) {
 imgurl = jQuery('img',html).attr('src'); //imgurl is always empty after deleting url field
 jQuery('#upload_image').val(imgurl);
 tb_remove();
}

});

それに、image-sizeだけを無効にしてurlだけを残すと、imgurl = jQuery('img',html).attr('src')は空になります。そのサイズは常に "中"に設定されています。

私はこのようにURLと画像サイズを渡そうとしていました:

 function thickbox_fields($form_fields, $post){
        unset(
           $form_fields['post_title'], //disables "Title" field and so forth...
           $form_fields['url'] );
           $form_fields['image_alt'], 
           $form_fields['post_excerpt'], 
           $form_fields['post_content'], 
           $form_fields['align'], 
           $form_fields['image-size'], 
        );

        $form_fields['url'] = 'not sure how to get the url here, but this doesnt work anyways';
        $form_fields['image-size'] = 'full'; //yup, this also doesn't work at all

        return $form_fields;
    }

私はこれらのフィールドが配列であることを知っています、しかし$form_fields['image-size'] = array('size' => 'full')、また働きません。

何かヒントは?

TL; DR - Thickboxからurlとimage-sizeのフィールドを隠して、次にurlフィールドの値をフロントエンドに送るには?また、image-sizeの設定を解除すると、常に中サイズのアップロードへのリンクが返されるため、Thickboxにファイルを「フル」としてアップロードさせる方法もあります。

Image_size_input_fieldsフィルタが役に立つと思います。

4
Wordpressor

注意が必要ですが、WordPressがサイズとフィールドをどのように設定するかを理解すれば、あとは簡単です。

function thickbox_fields($form_fields, $post){
    unset(
        $form_fields['post_title'], //disables "Title" field and so forth...
        $form_fields['url'],
        $form_fields['image_alt'], 
        $form_fields['post_excerpt'], 
        $form_fields['post_content'], 
        $form_fields['align'], 
        $form_fields['image-size']
    );

    //create the size input for full only and set display to none
    $size = 'full';
    $css_id = "image-size-{$size}-{$post->ID}";
    $html = "<div style='display: none;' class='image-size-item'><input type='radio' name='attachments[$post->ID][image-size]' id='{$css_id}' value='{$size}'checked='checked' /></div>";
    //set as image-size field
    $form_fields['image-size'] = array(
        'label' => '', //leave with no label
        'input' => 'html', //input type is html
        'html' => $html //the actual html
    ); 

    return $form_fields;
}

最初に不要なフィールドをすべて削除してから、WordPressがサイズフィールドを作成する方法を模倣しますが、選択されたオプションはfullだけで、display:noneを使用して非表示にします。

そして、それをWordPressが受け付ける方法でfields配列に追加します。これは、単純な文字列ではなく、パラメータ(label、input、html)の配列を見ることができます。

今本当の質問のために:画像内の女の子は誰ですか???

4
Bainternet