wake-up-neo.net

wp_dropdown_categories im benutzerdefinierten Beitragstyp mit benutzerdefinierter Taxonomie

Ich habe einen benutzerdefinierten Post-Typ mit einer eigenen Taxonomie. Im Grunde genommen ist Show Venues der Post-Typ und Venue-Regions die Taxonomie.

Angesichts der Tatsache, dass ein Veranstaltungsort in mehreren Regionen nicht existieren kann, habe ich die Standard-Metta-Box entfernt und meine eigene als Dropdown-Liste mit wp_dropdown_categories() hinzugefügt. Die Taxonomie-Elemente werden ausgegeben und wie gewünscht angezeigt, ABER sie werden nicht gesendet, und die Dropdown-Liste enthält die Auswahl nach dem Senden nicht. Ich habe versucht, die verschiedenen Attribute der ursprünglichen Metabox zu betrachten und diese auf die Dropdown-Liste anzuwenden, aber bisher hatte ich keine Freude.

Ich habe mir einige der verschiedenen Posts auf WPSE angesehen und habe nicht herausfinden können, wo ich falsch liege.

Kann jemand erläutern, was meine nächsten Schritte sein sollten/welche Teile Im fehlen?

<?php
// remove the default taxononomy
add_action( 'admin_menu', 'tr_remove_meta_box');  
function tr_remove_meta_box(){  
   remove_meta_box('venue-regiondiv', 'venue', 'normal');  
} 

//Add new taxonomy meta box  
 add_action( 'add_meta_boxes', 'tr_add_meta_box');  

 function tr_add_meta_box() {  
     add_meta_box( 'venue-region-dropdowndiv', 'What region is this venue in?','tr_venuesTaxonomydropdown_metabox','venue' ,'side','core');  
 }  

//Callback to set up the metabox
function tr_venuesTaxonomydropdown_metabox( $post ) {
    $taxonomy = 'venue-region';

    //The name of the form  
    $name = 'tax_input[' . $taxonomy . '][]';  
    $id = $taxonomy.'dropdown';
    //Get current and popular terms
    $postterms = get_the_terms( $post->ID,$taxonomy );
    $current = ($postterms ? array_pop($postterms) : false);
    $current = ($current ? $current->term_id : 0);
    ?>

    <div id="taxonomy-<?php echo $taxonomy; ?>" class="categorydiv">
        <!-- Display taxonomy terms -->
        <div id="<?php echo $taxonomy; ?>-all" class="tabs-panel">
            <?php $args = array(
                    'show_option_all'    => 'Choose a region',
                    'show_option_none'   => '',
                    'orderby'            => 'ID', 
                    'order'              => 'ASC',
                    'show_count'         => 0,
                    'hide_empty'         => 0, 
                    'child_of'           => 0,
                    'exclude'            => '',
                    'echo'               => 1,
                    'selected'           => 1,
                    'hierarchical'       => 1, 
                    'name'               => $name,
                    'id'                 => $id,
                    'class'              => 'form-no-clear',
                    'depth'              => 0,
                    'tab_index'          => 0,
                    'taxonomy'           => $taxonomy,
                    'hide_if_empty'      => true
            ); ?>

          <?php wp_dropdown_categories($args); ?>
        </div>
    </div>
    <?php
}
4
orionrush

Post-ID abrufen

    $post_id=get_the_ID();

gewählte Region holen

    $terms = wp_get_post_terms( $post_id, $taxonomy );

    $selected_id='';

    if(isset($terms[0]->term_id)){

        $selected_id=$terms[0]->term_id;
    }

hierarchische Dropdown-Liste erstellen

wp_dropdown_categories( array(
    'show_option_all'    => 'Choose a region',
    'show_option_none'   => '',
    'orderby'            => 'ID', 
    'order'              => 'ASC',
    'show_count'         => 0,
    'hide_empty'         => 0, 
    'child_of'           => 0,
    'exclude'            => '',
    'echo'               => 1,
    'selected'           => $selected_id,
    'hierarchical'       => 1, 
    'name'               => 'tax_input['.$taxonomy.'][]',     // important
    'id'                 => $id,
    'class'              => 'form-no-clear',
    'depth'              => 0,
    'tab_index'          => 0,
    'taxonomy'           => $taxonomy,
    'hide_if_empty'      => true
) );
2
RafaSashi

Mit der Funktion wp_dropdown_categories() können Sie einen Parameter namens selected verwenden, dem Sie die ausgewählte Kategorie-ID zuweisen würden. Sie sollten auch den Namen Ihrer Auswahl standardisieren, damit das Speichern einfacher ist:

$selected_id = get_post_meta( $post->ID, 'selected_tax', true );

wp_dropdown_categories( array(
    'show_option_all'    => 'Choose a region',
    'show_option_none'   => '',
    'orderby'            => 'ID', 
    'order'              => 'ASC',
    'show_count'         => 0,
    'hide_empty'         => 0, 
    'child_of'           => 0,
    'exclude'            => '',
    'echo'               => 1,
    'selected'           => $selected_id,
    'hierarchical'       => 1, 
    'name'               => 'selected_tax',
    'id'                 => $id,
    'class'              => 'form-no-clear',
    'depth'              => 0,
    'tab_index'          => 0,
    'taxonomy'           => $taxonomy,
    'hide_if_empty'      => true
) );

Sie müssen das Postmeta speichern und das Postmeta abrufen (über get_post_meta()). In Ihrem Beispiel wird anscheinend der erste Begriff angezeigt, der möglicherweise nicht immer der ausgewählte Begriff ist. Dann weisen Sie den $selected_id dem selected-Index in unseren Argumenten zu.

0
Howdy_McGee