web-dev-qa-db-ja.com

カスタム分類法をドロップダウンリストとして表示する

カスタム分類法のリストをドロップダウンリストとして表示したい。

私はここで解決策を見つけました、@ alexufoの答え

投稿の編集ページにカスタム分類法をドロップダウンとして表示する

しかし、それに関する問題は、選択された分類法で投稿を公開すると、自動的に別の分類法が作成されることです。

私は50の評判を持っていないので、私は彼の答えにコメントすることはできません。

これが私のコードです

function realty_type() {
    $args = array(
        'show_ui'                    => true,
        'meta_box_cb'                => 'drop_cat',
    );
    register_taxonomy( 'realty_type', array( 'my-CPT' ), $args );

    }

    // Hook into the 'init' action
    add_action( 'init', 'realty_type', 0 );


    function drop_cat( $post, $box ) {
    $defaults = array('taxonomy' => 'category');
    if ( !isset($box['args']) || !is_array($box['args']) )
        $args = array();
    else
        $args = $box['args'];
    extract( wp_parse_args($args, $defaults), EXTR_SKIP );
    $tax = get_taxonomy($taxonomy);
    ?>
    <div id="taxonomy-<?php echo $taxonomy; ?>" class="acf-taxonomy-field categorydiv">

            <?php 
            $name = ( $taxonomy == 'category' ) ? 'post_category' : 'tax_input[' . $taxonomy . ']';
            echo "<input type='hidden' name='{$name}[]' value='0' />"; // Allows for an empty term set to be sent. 0 is an invalid Term ID and will be ignored by empty() checks.
            ?>
            <? $term_obj = wp_get_object_terms($post->ID, $taxonomy ); //_log($term_obj[0]->term_id)?>
            <ul id="<?php echo $taxonomy; ?>checklist" data-wp-lists="list:<?php echo $taxonomy?>" class="categorychecklist form-no-clear">
                <?php //wp_terms_checklist($post->ID, array( 'taxonomy' => $taxonomy) ) ?>
            </ul>

            <?php wp_dropdown_categories( array( 'taxonomy' => $taxonomy, 'hide_empty' => 0, 'name' => "{$name}[]", 'selected' => $term_obj[0]->term_id, 'orderby' => 'name', 'hierarchical' => 0, 'show_option_none' => '&mdash;' ) ); ?>

    </div>
    <?php
    }
1
Mais_Cule

最後に私はいくつかの試行錯誤の後に解決策を見つけました。

分類法の引数の登録では、分類法のインクリメントをやめて分類法を自動的に追加し続けるために'hierarchical' => trueを設定する必要がありました。

それが文書を調べた後になぜそれが問題を引き起こしていたのか私にはわかりません、誰かがその理由を知っているならば説明してください。

function realty_type() {

    $args = array(
        'show_ui'                    => true,
        'meta_box_cb'                => 'drop_cat',
        'hierarchical' => true
    );

    register_taxonomy( 'realty_type', array( 'YOUR_POST_TYPE' ), $args );    
    }

    // Hook into the 'init' action
    add_action( 'init', 'realty_type', 0 );
0
Mais_Cule

以下は、チェックボックスの代わりにカスタム分類法をドロップダウンとして表示するために使用する最も簡単な方法です。

1 /サードパーティのWordPressプラグイン「ACF」を使用して、分類「Relational」フィールドタイプを作成し、下のスクリーンショットに示すようにドロップダウンとして表示します。

https://wordpress.org/plugins/advanced-custom-fields/ /

enter image description here 

enter image description here 

選択した分類法を表示するには、リレーショナル分類法フィールドタイプについてACFの文書を参照してください。

https://www.advancedcustomfields.com/resources/taxonomy/ /

2 /カスタム分類法を登録するときに「meta_box_cb」を「false」として追加するだけで分類法チェックボックスを非表示にする。

お役に立てれば..!!

0
dhirenpatel22