WordPress.org

Plugin Directory

Changeset 577744


Ignore:
Timestamp:
07/26/12 16:04:01 (21 months ago)
Author:
Omicron7
Message:

ACF Taxonomy Field 1.3 Release

Location:
advanced-custom-fields-taxonomy-field-add-on/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • advanced-custom-fields-taxonomy-field-add-on/trunk/languages/acf-taxonomy-field.pot

    r574810 r577744  
    55"Project-Id-Version:  \n" 
    66"Report-Msgid-Bugs-To: http://wordpress.org/tag/acf-taxonomy-field\n" 
    7 "POT-Creation-Date: 2012-07-19 18:48:27+00:00\n" 
     7"POT-Creation-Date: 2012-07-26 15:53:40+00:00\n" 
    88"MIME-Version: 1.0\n" 
    99"Content-Type: text/plain; charset=UTF-8\n" 
     
    1313"Language-Team: LANGUAGE <LL@li.org>\n" 
    1414 
    15 #: taxonomy-field.php:110 taxonomy-field.php:232 
     15#: taxonomy-field.php:216 taxonomy-field.php:307 
    1616msgid "Taxonomy" 
    1717msgstr "" 
    1818 
    19 #: taxonomy-field.php:233 
     19#: taxonomy-field.php:308 
    2020msgid "Select the taxonomy to display." 
    2121msgstr "" 
    2222 
    23 #: taxonomy-field.php:248 
     23#: taxonomy-field.php:323 
    2424msgid "Input Method" 
    2525msgstr "" 
    2626 
    27 #: taxonomy-field.php:259 
     27#: taxonomy-field.php:334 
    2828msgid "Select" 
    2929msgstr "" 
    3030 
    31 #: taxonomy-field.php:260 
     31#: taxonomy-field.php:335 
    3232msgid "Multi-Select" 
    3333msgstr "" 
    3434 
    35 #: taxonomy-field.php:261 
     35#: taxonomy-field.php:336 
    3636msgid "Hierarchical Checkboxes" 
    3737msgstr "" 
    3838 
    39 #: taxonomy-field.php:270 
     39#: taxonomy-field.php:344 
    4040msgid "Set Post Terms" 
    4141msgstr "" 
    4242 
    43 #: taxonomy-field.php:271 
     43#: taxonomy-field.php:345 
    4444msgid "" 
    4545"Add the selected term(s) to the post. The current post must support the " 
     
    4747msgstr "" 
    4848 
    49 #: taxonomy-field.php:285 
     49#: taxonomy-field.php:355 
     50msgid "Not Set" 
     51msgstr "" 
     52 
     53#: taxonomy-field.php:356 
     54msgid "Append Terms" 
     55msgstr "" 
     56 
     57#: taxonomy-field.php:357 
     58msgid "Override Terms" 
     59msgstr "" 
     60 
     61#: taxonomy-field.php:365 
    5062msgid "Return Value" 
    5163msgstr "" 
    5264 
    53 #: taxonomy-field.php:286 
     65#: taxonomy-field.php:366 
    5466msgid "Choose the field value type returned by API calls." 
    5567msgstr "" 
    5668 
    57 #: taxonomy-field.php:296 
     69#: taxonomy-field.php:376 
    5870msgid "Links" 
    5971msgstr "" 
    6072 
    61 #: taxonomy-field.php:297 
     73#: taxonomy-field.php:377 
    6274msgid "Objects" 
    6375msgstr "" 
    6476 
    65 #: taxonomy-field.php:298 
     77#: taxonomy-field.php:378 
    6678msgid "Term IDs" 
    6779msgstr "" 
    6880 
    69 #: taxonomy-field.php:307 
    70 msgid "Add New Terms" 
    71 msgstr "" 
    72  
    73 #: taxonomy-field.php:308 
    74 msgid "Add any new terms to the selected taxonomy." 
    75 msgstr "" 
    76  
    77 #: taxonomy-field.php:323 
     81#: taxonomy-field.php:386 
    7882msgid "Multi-Select Size" 
    7983msgstr "" 
    8084 
    81 #: taxonomy-field.php:324 
     85#: taxonomy-field.php:387 
    8286msgid "The number of terms to show at once in a multi-select." 
    8387msgstr "" 
  • advanced-custom-fields-taxonomy-field-add-on/trunk/readme.txt

    r574810 r577744  
    44Requires at least: 3.0 
    55Tested up to: 3.4.1 
    6 Stable tag: 1.2 
     6Stable tag: 1.3 
    77 
    88Adds a Taxonomy Field to Advanced Custom Fields. Select one or more taxonomy terms and assign them to the post. 
     
    5757== Changelog == 
    5858 
     59= 1.3 = 
     60* Fixed issue where ACF value was incorrect when setting terms on a post. Props dmeehan1968 
     61* Fixed issue with repeater returning the same value for every row when Set Post Terms is enabled. Props XedinUnknown 
     62* Added indentation to hierarchical taxonomies in the select or multiselect. Props dmeehan1968 
     63* Added the ability to append or override terms on a post. Props dmeehan1968 
     64* Removed unused code and improved coding practices by using constants. 
     65* Updated localizations 
     66 
    5967= 1.2 = 
    6068* Fixed issue Taxonomy Field not working in a Repeater Field. Props markSal 
  • advanced-custom-fields-taxonomy-field-add-on/trunk/taxonomy-field.php

    r574810 r577744  
    66* Author:      Brian Zoetewey 
    77* Author URI:  https://github.com/GCX 
    8 * Version:     1.2 
     8* Version:     1.3 
    99* Text Domain: acf-taxonomy-field 
    1010* Domain Path: /languages/ 
     
    4949 *  
    5050 * @author Brian Zoetewey <brian.zoetewey@ccci.org> 
    51  * @version 1.2 
     51 * @version 1.3 
    5252 */ 
    5353class ACF_Taxonomy_Field extends acf_Field { 
     54 
     55    /** 
     56     * Field name 
     57     * @var string 
     58     */ 
     59    const FIELD_NAME = 'name'; 
     60 
     61    /** 
     62     * Field class 
     63     * @var string 
     64     */ 
     65    const FIELD_CLASS = 'class'; 
     66 
     67    /** 
     68     * Field value 
     69     * @var string 
     70     */ 
     71    const FIELD_VALUE = 'value'; 
     72 
     73    /** 
     74     * Field taxonomy type 
     75     * @var string 
     76     */ 
     77    const FIELD_TAXONOMY = 'taxonomy'; 
     78 
     79    /** 
     80     * Field input type 
     81     * @var string 
     82     */ 
     83    const FIELD_INPUT_TYPE = 'input_type'; 
     84 
     85    /** 
     86     * Field input size 
     87     * @var string 
     88     */ 
     89    const FIELD_INPUT_SIZE = 'input_size'; 
     90 
     91    /** 
     92     * Field set post terms 
     93     * @var string 
     94     */ 
     95    const FIELD_SET_TERMS = 'set_post_terms'; 
     96 
     97    /** 
     98     * Field return value type 
     99     * @var string 
     100     */ 
     101    const FIELD_RETURN_TYPE = 'return_value_type'; 
     102 
     103    /** 
     104     * Input Type select 
     105     * @var string 
     106     */ 
     107    const INPUT_TYPE_SELECT = 'select'; 
     108 
     109    /** 
     110     * Input Type multiselect 
     111     * @var string 
     112     */ 
     113    const INPUT_TYPE_MULTISELECT = 'multiselect'; 
     114 
     115    /** 
     116     * Input Type hierarchical checkboxes 
     117     * @var string 
     118     */ 
     119    const INPUT_TYPE_CHECKBOX = 'hierarchical'; 
     120 
     121    /** 
     122     * Set Post Terms not set 
     123     * @var string 
     124     */ 
     125    const SET_TERMS_NOT_SET = 'not_set'; 
     126 
     127    /** 
     128     * Set Post Terms append 
     129     * @var string 
     130     */ 
     131    const SET_TERMS_APPEND = 'append'; 
     132 
     133    /** 
     134     * Set Post Terms override 
     135     * @var string 
     136     */ 
     137    const SET_TERMS_OVERRIDE = 'override'; 
     138 
     139    /** 
     140     * Return Value Type IDs 
     141     * @var string 
     142     */ 
     143    const RETURN_TYPE_ID = 'id'; 
     144 
     145    /** 
     146     * Return Value Type objects 
     147     * @var string 
     148     */ 
     149    const RETURN_TYPE_OBJECT = 'object'; 
     150 
     151    /** 
     152     * Return Value Type links 
     153     * @var string 
     154     */ 
     155    const RETURN_TYPE_LINK = 'link'; 
     156 
    54157    /** 
    55158     * Base directory 
     
    57160     */ 
    58161    private $base_dir; 
    59      
     162 
    60163    /** 
    61164     * Relative Uri from the WordPress ABSPATH constant 
     
    63166     */ 
    64167    private $base_uri_rel; 
    65      
     168 
    66169    /** 
    67170     * Absolute Uri 
     
    71174     */ 
    72175    private $base_uri_abs; 
    73      
     176 
    74177    /** 
    75178     * WordPress Localization Text Domain 
     
    79182     */ 
    80183    private $l10n_domain; 
    81      
     184 
    82185    /** 
    83186     * Class Constructor - Instantiates a new Taxonomy Field 
     
    109212        $this->name  = 'taxonomy-field'; 
    110213        $this->title = __( 'Taxonomy', $this->l10n_domain ); 
    111          
    112         add_action( 'admin_print_scripts', array( &$this, 'admin_print_scripts' ), 12, 0 ); 
    113         add_action( 'admin_print_styles',  array( &$this, 'admin_print_styles' ),  12, 0 ); 
    114     } 
    115      
    116     /** 
    117      * Registers and enqueues necessary CSS 
    118      *  
    119      * This method is called by ACF when rendering a post add or edit screen. 
    120      * We also call this method on the Acf Field Options screen as well in order 
    121      * to style our Field options 
    122      *  
    123      * @see acf_Field::admin_print_styles() 
    124      */ 
    125     public function admin_print_styles() { 
    126         global $pagenow; 
    127 //      wp_register_style( 'acf-taxonomy-field', $this->base_uri_abs . '/taxonomy-field.css' ); 
    128          
    129         if( in_array( $pagenow, array( 'post.php', 'post-new.php' ) ) ) { 
    130 //          wp_enqueue_style( 'acf-taxonomy-field' ); 
    131         } 
    132     } 
    133      
    134     /** 
    135      * Registers and enqueues necessary JavaScript 
    136      *  
    137      * This method is called by ACF when rendering a post add or edit screen. 
    138      * We also call this method on the Acf Field Options screen as well in order 
    139      * to add the necessary JavaScript for taxonomy selection. 
    140      *  
    141      * @see acf_Field::admin_print_scripts() 
    142      */ 
    143     public function admin_print_scripts() { 
    144         global $pagenow; 
    145 //      wp_register_script( 'acf-taxonomy-field', $this->base_uri_abs . '/taxonomy-field.js', array( 'jquery' ) ); 
    146          
    147         if( in_array( $pagenow, array( 'post.php', 'post-new.php' ) ) ) { 
    148 //          wp_enqueue_script( 'acf-taxonomy-field' ); 
    149         } 
    150214    } 
    151215     
     
    157221     */ 
    158222    private function set_field_defaults( &$field ) { 
    159         $field[ 'taxonomy' ]          = ( array_key_exists( 'taxonomy', $field ) && isset( $field[ 'taxonomy' ] ) ) ? $field[ 'taxonomy' ] : 'category'; 
    160         $field[ 'input_type' ]        = ( array_key_exists( 'input_type', $field ) && isset( $field[ 'input_type' ] ) ) ? $field[ 'input_type' ] : 'select'; 
    161         $field[ 'input_size' ]        = ( array_key_exists( 'input_size', $field ) && isset( $field[ 'input_size' ] ) ) ? (int) $field[ 'input_size' ] : 5; 
    162 //      $field[ 'allow_new_terms' ]   = ( array_key_exists( 'allow_new_terms', $field ) && isset( $field[ 'allow_new_terms' ] ) ) ? (int) $field[ 'allow_new_terms' ] : 0; //false 
    163         $field[ 'set_post_terms' ]    = ( array_key_exists( 'set_post_terms', $field ) && isset( $field[ 'set_post_terms' ] ) ) ? (int) $field[ 'set_post_terms' ] : 1; //true 
    164         $field[ 'return_value_type' ] = isset( $field[ 'return_value_type' ] ) ? $field[ 'return_value_type' ] : 'link'; 
     223        $field[ self::FIELD_TAXONOMY ]   = ( array_key_exists( self::FIELD_TAXONOMY, $field ) && isset( $field[ self::FIELD_TAXONOMY ] ) ) ? $field[ self::FIELD_TAXONOMY ] : 'category'; 
     224        $field[ self::FIELD_INPUT_TYPE ] = ( array_key_exists( self::FIELD_INPUT_TYPE, $field ) && isset( $field[ self::FIELD_INPUT_TYPE ] ) ) ? $field[ self::FIELD_INPUT_TYPE ] : self::INPUT_TYPE_SELECT; 
     225        $field[ self::FIELD_INPUT_SIZE ] = ( array_key_exists( self::FIELD_INPUT_SIZE, $field ) && isset( $field[ self::FIELD_INPUT_SIZE ] ) ) ? (int) $field[ self::FIELD_INPUT_SIZE ] : 5; 
     226 
     227        $field[ self::FIELD_SET_TERMS ]  = ( array_key_exists( self::FIELD_SET_TERMS, $field ) && isset( $field[ self::FIELD_SET_TERMS ] ) ) ? $field[ self::FIELD_SET_TERMS ] : self::SET_TERMS_NOT_SET; 
     228        if( $field[ self::FIELD_SET_TERMS ] == '1' ) $field[ self::FIELD_SET_TERMS ] = self::SET_TERMS_OVERRIDE; 
     229        elseif( $field[ self::FIELD_SET_TERMS ] == '0' ) $field[ self::FIELD_SET_TERMS ] = self::SET_TERMS_NOT_SET; 
     230 
     231        $field[ self::FIELD_RETURN_TYPE ] = isset( $field[ self::FIELD_RETURN_TYPE ] ) ? $field[ self::FIELD_RETURN_TYPE ] : self::RETURN_TYPE_LINK; 
    165232        return $field; 
    166233    } 
     
    174241        $this->set_field_defaults( $field ); 
    175242         
    176         $terms = get_terms( $field['taxonomy'], array( 'hide_empty' => false ) ); 
    177         $value = is_array( $field[ 'value' ] ) ? $field[ 'value' ] : array(); 
    178  
    179         if( in_array( $field[ 'input_type' ], array( 'select', 'multiselect' ) ) ) : 
     243        $field[ self::FIELD_VALUE ] = is_array( $field[ self::FIELD_VALUE ] ) ? $field[ self::FIELD_VALUE ] : array(); 
     244 
     245        if( in_array( $field[ self::FIELD_INPUT_TYPE ], array( self::INPUT_TYPE_SELECT, self::INPUT_TYPE_MULTISELECT ) ) ) : 
    180246        ?> 
    181             <select name="<?php echo $field[ 'name' ]; ?>[]" id="<?php echo $field[ 'name' ]; ?>" class="<?php echo $field[ 'class' ]; ?>" <?php echo ( $field[ 'input_type' ] == 'multiselect' ) ? 'multiple="multiple" size="' . $field[ 'input_size' ] . '"' : ''; ?>> 
    182                 <?php foreach( $terms as $term ) : ?> 
    183                     <option value="<?php echo $term->term_id; ?>" <?php selected( in_array( (int) $term->term_id, $value ) ); ?>><?php echo $term->name; ?></option> 
    184                 <?php endforeach; ?> 
     247            <select name="<?php echo $field[ self::FIELD_NAME ]; ?>[]" id="<?php echo $field[ self::FIELD_NAME ]; ?>" class="<?php echo $field[ self::FIELD_CLASS ]; ?>" <?php echo ( $field[ self::FIELD_INPUT_TYPE ] == self::INPUT_TYPE_MULTISELECT ) ? 'multiple="multiple" size="' . $field[ self::FIELD_INPUT_SIZE ] . '"' : ''; ?>> 
     248                <?php 
     249                    wp_list_categories( array( 
     250                        'taxonomy'     => $field[ self::FIELD_TAXONOMY ], 
     251                        'hide_empty'   => false, 
     252                        'hierarchical' => is_taxonomy_hierarchical( $field[ self::FIELD_TAXONOMY ] ), 
     253                        'style'        => 'none', 
     254                        'walker'       => new ACF_Walker_Taxonomy_Field_List( $field ), 
     255                    ) ); 
     256                ?> 
    185257            </select> 
    186258        <?php 
    187         elseif ( in_array( $field[ 'input_type'], array( 'hierarchical' ) ) ): 
    188         $id = $field['name'] . '-' . $field['taxonomy']; 
     259        elseif ( in_array( $field[ self::FIELD_INPUT_TYPE ], array( self::INPUT_TYPE_CHECKBOX ) ) ): 
     260        $id = "{$field[ self::FIELD_NAME ]}-{$field[ self::FIELD_TAXONOMY ]}"; 
    189261        ?> 
    190262            <div id="taxonomy-<?php echo $id; ?>" class="categorydiv"> 
    191263                <div id="<?php echo $id; ?>-all" class="tabs-panel"> 
    192264                    <?php 
    193                     $name = ( $field['taxonomy'] == 'category' ) ? 'post_category' : $field['name']; 
     265                    $name = ( $field[ self::FIELD_TAXONOMY ] == 'category' ) ? 'post_category' : $field[ self::FIELD_NAME ]; 
    194266                    echo "<input type='hidden' name='{$name}' value='' />"; 
    195267                    ?> 
    196                     <ul id="<?php echo $id; ?>checklist" class="list:<?php echo $field['taxonomy']; ?> categorychecklist form-no-clear"> 
     268                    <ul id="<?php echo $id; ?>checklist" class="list:<?php echo $field[ self::FIELD_TAXONOMY ]; ?> categorychecklist form-no-clear"> 
    197269                        <?php  
    198270                            wp_terms_checklist( 0, array( 
    199271                                'name'          => $name, 
    200272                                'checked_ontop' => false, 
    201                                 'selected_cats' => $value, 
    202                                 'taxonomy'      => $field['taxonomy'], 
     273                                'selected_cats' => $field[ self::FIELD_VALUE ], 
     274                                'taxonomy'      => $field[ self::FIELD_TAXONOMY ], 
    203275                                'walker'        => new ACF_Walker_Taxonomy_Field_Checklist($field) 
    204276                            ) ); 
     
    237309                        $this->parent->create_field( array( 
    238310                            'type'    => 'select', 
    239                             'name'    => "fields[{$key}][taxonomy]", 
    240                             'value'   => $field[ 'taxonomy' ], 
     311                            'name'    => "fields[{$key}][" . self::FIELD_TAXONOMY . "]", 
     312                            'value'   => $field[ self::FIELD_TAXONOMY ], 
    241313                            'choices' => $tax_choices, 
    242314                        ) ); 
     
    253325                        $this->parent->create_field( array( 
    254326                            'type'    => 'select', 
    255                             'name'    => "fields[{$key}][input_type]", 
    256                             'value'   => $field[ 'input_type' ], 
     327                            'name'    => "fields[{$key}][" . self::FIELD_INPUT_TYPE . "]", 
     328                            'value'   => $field[ self::FIELD_INPUT_TYPE ], 
    257329                            'class'   => 'taxonomy_input_type', 
    258330                            'choices' => array( 
    259                                 'select'      => __( 'Select', $this->l10n_domain ), 
    260                                 'multiselect' => __( 'Multi-Select', $this->l10n_domain ), 
    261                                 'hierarchical' => __( 'Hierarchical Checkboxes', $this->l10n_domain ), 
    262                                 //'token'       => 'Input Tokenizer', 
     331                                self::INPUT_TYPE_SELECT      => __( 'Select', $this->l10n_domain ), 
     332                                self::INPUT_TYPE_MULTISELECT => __( 'Multi-Select', $this->l10n_domain ), 
     333                                self::INPUT_TYPE_CHECKBOX    => __( 'Hierarchical Checkboxes', $this->l10n_domain ), 
    263334                            ), 
    264335                        ) ); 
     
    274345                    <?php  
    275346                        $this->parent->create_field( array( 
    276                             'type'  => 'true_false', 
    277                             'name'  => "fields[{$key}][set_post_terms]", 
    278                             'value' => $field[ 'set_post_terms' ], 
     347                            'type'    => 'radio', 
     348                            'name'    => 'fields[' . $key . '][' . self::FIELD_SET_TERMS . ']', 
     349                            'value'   => $field[ self::FIELD_SET_TERMS ], 
     350                            'layout'  => 'horizontal', 
     351                            'choices' => array( 
     352                                self::SET_TERMS_NOT_SET  => __( 'Not Set', $this->l10n_domain), 
     353                                self::SET_TERMS_APPEND   => __( 'Append Terms', $this->l10n_domain ), 
     354                                self::SET_TERMS_OVERRIDE => __( 'Override Terms', $this->l10n_domain ), 
     355                            ) 
    279356                        ) ); 
    280357                    ?> 
     
    290367                    $this->parent->create_field(array( 
    291368                        'type'    => 'radio', 
    292                         'name'    => 'fields['.$key.'][return_value_type]', 
    293                         'value'   => $field[ 'return_value_type' ], 
     369                        'name'    => 'fields[' . $key . '][' . self::FIELD_RETURN_TYPE . ']', 
     370                        'value'   => $field[ self::FIELD_RETURN_TYPE ], 
    294371                        'layout'  => 'horizontal', 
    295372                        'choices' => array( 
    296                             'link'   => __( 'Links', $this->l10n_domain), 
    297                             'object' => __( 'Objects', $this->l10n_domain ), 
    298                             'id'     => __( 'Term IDs', $this->l10n_domain ), 
     373                            self::RETURN_TYPE_LINK   => __( 'Links', $this->l10n_domain), 
     374                            self::RETURN_TYPE_OBJECT => __( 'Objects', $this->l10n_domain ), 
     375                            self::RETURN_TYPE_ID     => __( 'Term IDs', $this->l10n_domain ), 
    299376                        ) 
    300377                    ) ); 
     
    302379                </td> 
    303380            </tr> 
    304 <!-- 
    305             <tr class="field_option field_option_<?php echo $this->name; ?> taxonomy_add_terms"> 
    306                 <td class="label"> 
    307                     <label><?php _e( 'Add New Terms' , $this->l10n_domain ); ?></label> 
    308                     <p class="description"><?php _e( 'Add any new terms to the selected taxonomy.', $this->l10n_domain ); ?></p> 
    309                 </td> 
    310                 <td> 
    311                     <?php  
    312                         $this->parent->create_field( array( 
    313                             'type'  => 'true_false', 
    314                             'name'  => "fields[{$key}][allow_new_terms]", 
    315                             'value' => $field[ 'allow_new_terms' ], 
    316                         ) ); 
    317                     ?> 
    318                 </td> 
    319             </tr> 
    320 --> 
    321381            <tr class="field_option field_option_<?php echo $this->name; ?> taxonomy_input_size"> 
    322382                <td class="label"> 
     
    328388                        $this->parent->create_field( array( 
    329389                            'type'    => 'select', 
    330                             'name'    => "fields[{$key}][input_size]", 
    331                             'value'   => $field[ 'input_size' ], 
     390                            'name'    => "fields[{$key}][" . self::FIELD_INPUT_SIZE . "]", 
     391                            'value'   => $field[ self::FIELD_INPUT_SIZE ], 
    332392                            'choices' => array_combine( range( 3, 15, 2 ), range( 3, 15, 2 ) ), 
    333393                        ) ); 
     
    345405        $this->set_field_defaults( $field ); 
    346406         
    347         if( $field[ 'set_post_terms' ] ) { 
     407        if( in_array( $field[ self::FIELD_SET_TERMS ], array( self::SET_TERMS_APPEND, self::SET_TERMS_OVERRIDE ) ) ) { 
    348408            $terms = array(); 
    349409            foreach( (array) $value as $item ) { 
     
    353413                    $terms[] = strval( $item ); 
    354414            } 
    355             $value = wp_set_object_terms( $post_id, $terms, $field[ 'taxonomy' ], false ); 
     415            wp_set_object_terms( $post_id, $terms, $field[ self::FIELD_TAXONOMY ], $field[ self::FIELD_SET_TERMS ] == self::SET_TERMS_APPEND ); 
    356416        } 
    357417         
     
    383443        $this->set_field_defaults( $field ); 
    384444         
     445        $value = parent::get_value_for_api( $post_id, $field ); 
     446        $value = is_array( $value ) ? $value : array(); 
     447         
    385448        $terms = array(); 
    386          
    387         //If terms are set on the post, we can let WordPress create the list 
    388         if( $field[ 'set_post_terms' ] ) { 
    389             switch ( $field[ 'return_value_type' ] ) { 
    390                 case 'id': 
    391                     $the_terms = get_the_terms( $post_id, $field[ 'taxonomy' ] ); 
    392                     foreach ($the_terms as $term) { 
    393                         $terms[] = $term->term_id; 
    394                     } 
    395                     return $terms; 
    396                 case 'object': 
    397                     return get_the_terms( $post_id, $field[ 'taxonomy' ] ); 
    398                 case 'link': 
    399                 default: 
    400                     return get_the_term_list( $post_id, $field[ 'taxonomy' ] ); 
     449        foreach( $value as $term_id ) { 
     450            $term_id = intval( $term_id ); 
     451            switch( $field[ self::FIELD_RETURN_TYPE ] ) { 
     452                case self::RETURN_TYPE_ID: 
     453                    $terms[] = $term_id; 
     454                    break; 
     455                case self::RETURN_TYPE_OBJECT: 
     456                    $terms[] = get_term( $term_id, $field[ self::FIELD_TAXONOMY ] ); 
     457                    break; 
     458                case self::RETURN_TYPE_LINK: 
     459                    $term = get_term( $term_id, $field[ self::FIELD_TAXONOMY ] ); 
     460                    $terms[] = sprintf( 
     461                        '<a href="%1$s" rel="tag">%2$s</a>', 
     462                        esc_attr( get_term_link( $term, $field[ self::FIELD_TAXONOMY ] ) ), 
     463                        esc_html( $term->name ) 
     464                    ); 
     465                    break; 
    401466            } 
    402467        } 
    403468         
    404         //Otherwise, loop through the terms 
    405         $value = parent::get_value_for_api($post_id, $field); 
    406         if( empty( $value ) ) 
    407             return false; 
    408          
    409         foreach( $value as $term_id ) { 
    410             $term_id = intval( $term_id ); 
    411             $term = get_term( $term_id, $field[ 'taxonomy' ] ); 
    412             $link = get_term_link( $term, $field[ 'taxonomy' ] ); 
    413             if( !is_wp_error( $link ) ) 
    414                 switch ( $field[ 'return_value_type' ] ) { 
    415                     case 'id': 
    416                         $terms[] = $term_id; 
    417                     case 'object': 
    418                         $terms[] = $term; 
    419                         break; 
    420                     case 'link': 
    421                     default: 
    422                         $terms[] = '<a href="' . $link . '" rel="tag">' . $term->name . '</a>'; 
    423                         break; 
    424                 } 
    425                  
     469        switch( $field[ self::FIELD_RETURN_TYPE ] ) { 
     470            case self::RETURN_TYPE_ID: 
     471            case self::RETURN_TYPE_OBJECT: 
     472                return $terms; 
     473            case self::RETURN_TYPE_LINK: 
     474                //Allow plugins to modify 
     475                $terms = apply_filters( "term_links-{$field[ self::FIELD_TAXONOMY ]}", $terms ); 
     476                return implode( '', $terms ); 
    426477        } 
    427         if( empty( $terms ) ) 
    428             return false; 
    429          
    430         switch ( $field[ 'return_value_type' ] ) { 
    431             case 'id': 
    432             case 'object': 
    433                 return $terms; 
    434             case 'link': 
    435             default: 
    436                 //Allow plugins to modify 
    437                 $terms = apply_filters( "term_links-{$field[ 'taxonomy' ]}", $terms ); 
    438                 return join( '', $terms ); 
    439         } 
     478        return false; 
    440479    } 
    441480} 
     
    472511            $name = 'post_category'; 
    473512        else 
    474             $name = $this->field['name']; 
     513            $name = $this->field[ self::FIELD_NAME ]; 
    475514 
    476515        $class = in_array( $category->term_id, $popular_cats ) ? ' class="popular-category"' : ''; 
     
    484523 
    485524endif; //class_exists 'ACF_Walker_Taxonomy_Field_Checklist' 
     525 
     526 
     527if( !class_exists( 'ACF_Walker_Taxonomy_Field_List' ) ) : 
     528 
     529class ACF_Walker_Taxonomy_Field_List extends Walker { 
     530    var $tree_type = 'category'; 
     531    var $db_fields = array ( 'parent' => 'parent', 'id' => 'term_id' ); 
     532    private $field; 
     533 
     534    function __construct( $field ) { 
     535        $this->field = $field; 
     536    } 
     537     
     538    function start_el( &$output, $object, $depth, $args, $current_object_id = 0 ) { 
     539        $output .= '<option value="' . esc_attr( $object->term_id ) . '" ' . selected( in_array( (int) $object->term_id, $this->field[ ACF_Taxonomy_Field::FIELD_VALUE ] ), true, false ) . '>' . str_repeat( '&nbsp;', $depth * 3 ) . esc_attr( $object->name ) . '</option>'; 
     540    } 
     541} 
     542endif; //class_exists 'ACF_Walker_Taxonomy_Field_List' 
     543 
    486544 
    487545if( !class_exists( 'ACF_Taxonomy_Field_Helper' ) ) : 
Note: See TracChangeset for help on using the changeset viewer.