Make WordPress Core

Changes between Initial Version and Version 1 of Ticket #29839, comment 38


Ignore:
Timestamp:
11/16/2014 07:16:17 PM (11 years ago)
Author:
theMikeD
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #29839, comment 38

    initial v1  
    1 I've attached an updated unit test diff because I'v run into a problem that I can't figure out.
     1[Edited]
    22
    3 The first set of test deal with an hierarchical taxonomy, and they all pass, including the new one that verifies that `('get' => 'all)' works as expected.
    4 
    5 The problem is that I then go on to test a flat taxonomy, and the act of assigning terms to a post actually creates new terms, and I can't figure out why. The code in question is
    6 
    7 
    8 {{{
    9                 $flat_tax = 'countries';
    10                 register_taxonomy( $flat_tax, 'post', array( 'hierarchical' => false ) );
    11                 $australia = $this->factory->term->create( array( 'name' => 'Australia', 'taxonomy' => $flat_tax ) );
    12                 $china  =    $this->factory->term->create( array( 'name' => 'China',     'taxonomy' => $flat_tax ) );
    13                 $tanzania =  $this->factory->term->create( array( 'name' => 'Tanzania',  'taxonomy' => $flat_tax ) );
    14 
    15                 $post4_id = $this->factory->post->create();
    16                 $post5_id = $this->factory->post->create();
    17 
    18                  
    19                 // Check 1
    20                 $terms = get_terms( $flat_tax, array( 'childless' => true, 'hide_empty' => false) );
    21                 error_log( print_r( $terms ));
    22                 wp_set_post_terms( $post4_id, $montreal, $flat_tax );
    23                 wp_set_post_terms( $post5_id, $ottawa, $flat_tax );
    24                 // Check 2
    25                 $terms = get_terms( $flat_tax, array( 'childless' => true, 'hide_empty' => false) );
    26                 error_log( print_r( $terms ));
    27 }}}
    28 
    29 
    30 The results of Check 1 and 2 should be the same, but they are not. Check 1 shows the three terms as expected, but Check 2 shows the three terms plus two more that are just numbers, not text. For example
    31 
    32 Check 1
    33 
    34 {{{
    35 Array
    36 (
    37     [0] => stdClass Object
    38         (
    39             [term_id] => 10
    40             [name] => Australia
    41             [slug] => australia
    42             [term_group] => 0
    43             [term_taxonomy_id] => 10
    44             [taxonomy] => countries
    45             [description] => Term description 9
    46             [parent] => 0
    47             [count] => 0
    48         )
    49 
    50     [1] => stdClass Object
    51         (
    52             [term_id] => 11
    53             [name] => China
    54             [slug] => china
    55             [term_group] => 0
    56             [term_taxonomy_id] => 11
    57             [taxonomy] => countries
    58             [description] => Term description 10
    59             [parent] => 0
    60             [count] => 0
    61         )
    62 
    63     [2] => stdClass Object
    64         (
    65             [term_id] => 12
    66             [name] => Tanzania
    67             [slug] => tanzania
    68             [term_group] => 0
    69             [term_taxonomy_id] => 12
    70             [taxonomy] => countries
    71             [description] => Term description 11
    72             [parent] => 0
    73             [count] => 0
    74         )
    75 
    76 )
    77 }}}
    78 
    79 
    80 Check 2
    81 
    82 
    83 {{{
    84 Array
    85 (
    86     [0] => stdClass Object
    87         (
    88             [term_id] => 14
    89             [name] => 7
    90             [slug] => 7
    91             [term_group] => 0
    92             [term_taxonomy_id] => 14
    93             [taxonomy] => countries
    94             [description] =>
    95             [parent] => 0
    96             [count] => 1
    97         )
    98 
    99     [1] => stdClass Object
    100         (
    101             [term_id] => 13
    102             [name] => 8
    103             [slug] => 8
    104             [term_group] => 0
    105             [term_taxonomy_id] => 13
    106             [taxonomy] => countries
    107             [description] =>
    108             [parent] => 0
    109             [count] => 1
    110         )
    111 
    112     [2] => stdClass Object
    113         (
    114             [term_id] => 10
    115             [name] => Australia
    116             [slug] => australia
    117             [term_group] => 0
    118             [term_taxonomy_id] => 10
    119             [taxonomy] => countries
    120             [description] => Term description 9
    121             [parent] => 0
    122             [count] => 0
    123         )
    124 
    125     [3] => stdClass Object
    126         (
    127             [term_id] => 11
    128             [name] => China
    129             [slug] => china
    130             [term_group] => 0
    131             [term_taxonomy_id] => 11
    132             [taxonomy] => countries
    133             [description] => Term description 10
    134             [parent] => 0
    135             [count] => 0
    136         )
    137 
    138     [4] => stdClass Object
    139         (
    140             [term_id] => 12
    141             [name] => Tanzania
    142             [slug] => tanzania
    143             [term_group] => 0
    144             [term_taxonomy_id] => 12
    145             [taxonomy] => countries
    146             [description] => Term description 11
    147             [parent] => 0
    148             [count] => 0
    149         )
    150 
    151 )
    152 
    153 }}}
    154 
    155 This is implying that the `wp_set_post_terms` is adding the bad terms, but I don't understand why because the arguments seems fine: the first is `6, 11, countries` and the second is `7, 12, countries`.
    156 
    157 This false term insertion makes all assertions fail.
    158 
    159 Does anything jump out at you? I'm going around in circles.
     3False alarm. Still working on it.