web-dev-qa-db-ja.com

カスタム投稿タイプ - 分類ドロップダウンメニュー

カスタム投稿タイプを作成し、このカスタム投稿タイプにさまざまなメタボックス/フィールドを追加しました。 1つの要素を除いて、すべてがうまく機能しています...

分類法を選択するためにデフォルトのインターフェースを利用する代わりに、ユーザーが選択するためのドロップダウンメニューを用意したいと思います。

ここでの考え方は、特定の投稿が1つの分類にのみ関連付けられるように、一元管理できる分類要素を管理者が追加できるようにすることです。

さらに、このドロップダウンを既存のメタボックスの1つに追加することをお勧めします。

私がこの作業を完了できるようにするためのサンプルコードを持っている人はいますか?

5

この質問に別の投稿で回答しました: Saving Taxonomy Terms

1

これが私のやり方です。

<?php $tax = get_object_taxonomies('TAXONOMY_NAME');
    $taxterms = get_terms( $tax, 'orderby=count&offset=1&hide_empty=0&fields=all' );
?>
<select name='tax' id='tax'>
    <option value='' <?php if (!count( $names )) echo "selected";?>>Select Term</option>
    <?php 
    foreach ( $taxterms as $term ) { 
        echo '<option value="' . $term->slug . '" selected>' . $term->name . '</option>',"\n"; 
    } ?>
</select>
4
jaredwilli

これを行うためのコードはありませんが、単純にする必要があります。分類が階層的(カテゴリなど)の場合は値がid、タグがそうでない場合は値となるtax_input[your_taxonomy_name]という名前のドロップダウンを作成します。あなたがこの名前を使うならば、私はあなたからの追加のコードなしでそれが自動的に保存されると思います。あなたはwp_dropdown_categories関数でドロップダウンを作成することができます、選択されるべき分類学用語でselectedオプションを渡します。メタボックスを作成するコールバック関数は$postパラメータを取得するので、そこから現在の分類用語を取得できます。

通常追加されるメタボックスを無効にするには、分類法を作成するときにshow_uiをfalseに設定するか、描画する前にメタボックスを削除することができます(私はadd_meta_boxesフックが良い場所だと思います)。階層でない場合はid tagsdiv-your_taxonomy_name、階層でない場合はyour_taxonomy_namedivになります。

1
Jan Fabry