CMB2 Documentation
  • Package
  • Class
  • Tree
  • Deprecated
  • Todo
  • Hooks
  • Download Docs
  • Github

Packages

  • CMB2
  • Demo
    • CMB2
  • None
  • Tests
    • CMB2

Classes

  • CMB2
  • CMB2_Ajax
  • CMB2_Base
  • CMB2_Bootstrap_2101
  • CMB2_Boxes
  • CMB2_Display_Checkbox
  • CMB2_Display_Colorpicker
  • CMB2_Display_File
  • CMB2_Display_File_List
  • CMB2_Display_Multicheck
  • CMB2_Display_oEmbed
  • CMB2_Display_Select
  • CMB2_Display_Taxonomy_Multicheck
  • CMB2_Display_Taxonomy_Radio
  • CMB2_Display_Text_Date
  • CMB2_Display_Text_Date_Timezone
  • CMB2_Display_Text_Money
  • CMB2_Display_Text_Time
  • CMB2_Display_Text_Url
  • CMB2_Display_Textarea
  • CMB2_Display_Textarea_Code
  • CMB2_Field
  • CMB2_Field_Display
  • CMB2_Hookup
  • CMB2_Hookup_Base
  • CMB2_Integration_Box
  • CMB2_JS
  • CMB2_Option
  • CMB2_Options
  • CMB2_Options_Hookup
  • CMB2_REST
  • CMB2_REST_Controller
  • CMB2_REST_Controller_Boxes
  • CMB2_REST_Controller_Fields
  • CMB2_Sanitize
  • CMB2_Show_Filters
  • CMB2_Type_Base
  • CMB2_Type_Checkbox
  • CMB2_Type_Colorpicker
  • CMB2_Type_Counter_Base
  • CMB2_Type_File
  • CMB2_Type_File_Base
  • CMB2_Type_File_List
  • CMB2_Type_Multi_Base
  • CMB2_Type_Multicheck
  • CMB2_Type_Oembed
  • CMB2_Type_Picker_Base
  • CMB2_Type_Radio
  • CMB2_Type_Select
  • CMB2_Type_Select_Timezone
  • CMB2_Type_Taxonomy_Base
  • CMB2_Type_Taxonomy_Multicheck
  • CMB2_Type_Taxonomy_Multicheck_Hierarchical
  • CMB2_Type_Taxonomy_Radio
  • CMB2_Type_Taxonomy_Radio_Hierarchical
  • CMB2_Type_Taxonomy_Select
  • CMB2_Type_Taxonomy_Select_Hierarchical
  • CMB2_Type_Text
  • CMB2_Type_Text_Date
  • CMB2_Type_Text_Datetime_Timestamp
  • CMB2_Type_Text_Datetime_Timestamp_Timezone
  • CMB2_Type_Text_Time
  • CMB2_Type_Textarea
  • CMB2_Type_Textarea_Code
  • CMB2_Type_Title
  • CMB2_Type_Wysiwyg
  • CMB2_Types
  • CMB2_Utils

Hooks

  • Hook Reference
  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 101 102 103 
<?php
/**
 * CMB taxonomy_select field type
 *
 * @since  2.2.2
 *
 * @category  WordPress_Plugin
 * @package   CMB2
 * @author    CMB2 team
 * @license   GPL-2.0+
 * @link      https://cmb2.io
 */
class CMB2_Type_Taxonomy_Select extends CMB2_Type_Taxonomy_Base {

    /**
     * Current Term Object.
     *
     * @since 2.6.1
     *
     * @var   null|WP_Term
     */
    public $current_term = null;

    /**
     * Saved Term Object.
     *
     * @since 2.6.1
     *
     * @var   null|WP_Term
     */
    public $saved_term = null;

    public function render() {
        return $this->rendered(
            $this->types->select( array(
                'options' => $this->get_term_options(),
            ) )
        );
    }

    protected function get_term_options() {
        $all_terms = $this->get_terms();

        if ( ! $all_terms || is_wp_error( $all_terms ) ) {
            return $this->no_terms_result( $all_terms, 'strong' );
        }

        $this->saved_term  = $this->get_object_term_or_default();
        $option_none = $this->field->args( 'show_option_none' );
        $options     = '';

        if ( ! empty( $option_none ) ) {

            $field_id = $this->_id( '', false );

            /**
             * Default (option-none) taxonomy-select value.
             *
             * @since 1.3.0
             *
             * @param string $option_none_value Default (option-none) taxonomy-select value.
             */
            $option_none_value = apply_filters( 'cmb2_taxonomy_select_default_value', '' );

            /**
             * Default (option-none) taxonomy-select value.
             *
             * The dynamic portion of the hook name, $field_id, refers to the field id attribute.
             *
             * @since 1.3.0
             *
             * @param string $option_none_value Default (option-none) taxonomy-select value.
             */
            $option_none_value = apply_filters( "cmb2_taxonomy_select_{$field_id}_default_value", $option_none_value );

            $options .= $this->select_option( array(
                'label'   => $option_none,
                'value'   => $option_none_value,
                'checked' => $this->saved_term == $option_none_value,
            ) );
        }

        $options .= $this->loop_terms( $all_terms, $this->saved_term );

        return $options;
    }

    protected function loop_terms( $all_terms, $saved_term ) {
        $options = '';

        foreach ( $all_terms as $term ) {
            $this->current_term = $term;
            $options .= $this->select_option( array(
                'label'   => $term->name,
                'value'   => $term->slug,
                'checked' => $this->saved_term === $term->slug,
            ) );
        }

        return $options;
    }
}
CMB2 Documentation API documentation generated by ApiGen