web-dev-qa-db-ja.com

ファイルを添付する

それをクリックするとユーザーがすべてのメディアファイルを見ることができるライトボックスを開くメタボックスに配置することができる簡単な「アタッチ/ブラウズ」ボタンを作成する方法を知っている人は偶然知っていますか?添付して、一番下の「添付」ボタンをクリックしてください。 [添付]をクリックすると、ポストメタボックスは選択したすべてのファイルで更新されます。

4

ライトボックスを開く部分については、何かを参照してからアクション内で何かを実行します。Wordpressには、これがすでに組み込まれています。基本的に、ポストエディタで画像を参照するときに開くシックボックスです。ギャラリー。

そのために必要なすべてのコードは、すでに wordpressにあります。あなたがする必要がある唯一のことは、かなり複雑なコードの塊を集め、それをそれ自身でプラグインにパッケージ化し、そしてあなたの必要性に合うようにそれを修正することです。これらのコンポーネントは、それ自体ではあまり再利用できません。そのため、これを簡単にするAPIはありません。そうではありません、 のようにthickboxを表示するためにtb_show()を使うことができます

しかし全体的に見て、これは簡単なことではありません。あなたはおそらくより採用しやすいものを探しています。知りません。私はかつてthickbox <->投稿エディタとのコミュニケーション(あなたが必要とするものとはもっと複雑かもしれません)をいじっていました。しかし、あなたが説明するシナリオでは、ポップアップの選択が行われた後にthickboxを開いているページに何かを更新するように合図することがしばしば必要です。

メタボックスについては、作成方法を説明したコードスニペットが十分に見つかるはずです。そのためのコードがすでにあることは間違いありません。

2
hakre
2
t31os

https://github.com/jaredatch/Custom-Metaboxes-and-Fields-for-WordPress

これらの人たちはWP adminにカスタムフィールドタイプのための素晴らしいライブラリを作りました。私はそれがまさにあなたが探しているものだと思います - それは画像アップロードフィールドを作成することを簡単にします。

これにより、メタボックスを細かい制御でプログラム的にあらゆるポストタイプに対してデカールすることができます。

詳細についての要望がありました。知識が重複する危険性があるため、ここにドキュメントの例を示します(ファイルコントロールを使用するためのいくつかのmod付き)。画像のメタボックス:

function be_sample_metaboxes( $meta_boxes ) {
$prefix = '_cmb_'; // Prefix for all fields
$meta_boxes[] = array(
    'id' => 'test_metabox',
    'title' => 'Test Metabox',
    'pages' => array('page'), // post type
    'context' => 'normal',
    'priority' => 'high',
    'show_names' => true, // Show field names on the left
    'fields' => array(
        array(
            'name' => 'Test Text',
            'desc' => 'field description (optional)',
            'id' => $prefix . 'test_image',
            'type' => 'file'
        ),
    ),
);

return $meta_boxes;
}
add_filter( 'cmb_meta_boxes', 'be_sample_metaboxes' );


add_action( 'init', 'be_initialize_cmb_meta_boxes', 9999 );
function be_initialize_cmb_meta_boxes() {
if ( !class_exists( 'cmb_Meta_Box' ) ) {
    require_once( 'lib/metabox/init.php' );
}
}

私がしていることは、私が投稿タイプを作成している私のposttype_my_post_type_name.phpにこれを入れることです。メタボックスライブラリを必要とした後、これをfunctions.phpファイルから必要とします。

1
Will