Changeset 49171
- Timestamp:
- 10/16/2020 02:41:15 AM (4 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/class-wp-taxonomy.php
r49141 r49171 427 427 empty( $args['update_count_by_callback'] ) 428 428 ) { 429 $args['update_count_by_callback'] = function( $tt_ids, $taxonomy , $modify_by) {429 $args['update_count_by_callback'] = function( $tt_ids, $taxonomy ) use ( $args ) { 430 430 return call_user_func( $args['update_count_callback'], $tt_ids, $taxonomy ); 431 431 }; -
trunk/tests/phpunit/tests/taxonomy.php
r48939 r49171 5 5 */ 6 6 class Tests_Taxonomy extends WP_UnitTestCase { 7 8 /** 9 * Number of times full count callback has been called. 10 * 11 * @var int 12 */ 13 public $full_count_cb_called = 0; 14 15 /** 16 * Number of times partial count callback has been called. 17 * 18 * @var int 19 */ 20 public $partial_count_cb_called = 0; 21 7 22 function test_get_post_taxonomies() { 8 23 $this->assertSame( array( 'category', 'post_tag', 'post_format' ), get_object_taxonomies( 'post' ) ); … … 1031 1046 $this->assertSame( get_option( 'default_term_' . $tax ), false ); 1032 1047 } 1048 1049 /** 1050 * Ensure custom callbacks are used when registered. 1051 * 1052 * @covers register_taxonomy 1053 * @ticket 40351 1054 */ 1055 function test_register_taxonomy_counting_callbacks() { 1056 $post_id = self::factory()->post->create(); 1057 1058 register_taxonomy( 1059 'wp_tax_40351_full_only', 1060 'post', 1061 array( 1062 'update_count_callback' => array( $this, 'cb_register_taxonomy_full_count_callback' ), 1063 ) 1064 ); 1065 $full_term = self::factory()->term->create_and_get( 1066 array( 1067 'taxonomy' => 'wp_tax_40351_full_only', 1068 ) 1069 ); 1070 $full_term_id = $full_term->term_id; 1071 1072 register_taxonomy( 1073 'wp_tax_40351_partial_only', 1074 'post', 1075 array( 1076 'update_count_by_callback' => array( $this, 'cb_register_taxonomy_partial_count_callback' ), 1077 ) 1078 ); 1079 $partial_term = self::factory()->term->create_and_get( 1080 array( 1081 'taxonomy' => 'wp_tax_40351_partial_only', 1082 ) 1083 ); 1084 $partial_term_id = $partial_term->term_id; 1085 1086 register_taxonomy( 1087 'wp_tax_40351_both', 1088 'post', 1089 array( 1090 'update_count_callback' => array( $this, 'cb_register_taxonomy_full_count_callback' ), 1091 'update_count_by_callback' => array( $this, 'cb_register_taxonomy_partial_count_callback' ), 1092 ) 1093 ); 1094 $both_term = self::factory()->term->create_and_get( 1095 array( 1096 'taxonomy' => 'wp_tax_40351_both', 1097 ) 1098 ); 1099 $both_term_id = $both_term->term_id; 1100 $both_term_ttid = $both_term->term_taxonomy_id; 1101 1102 wp_set_post_terms( $post_id, $full_term_id, 'wp_tax_40351_full_only' ); 1103 $this->assertSame( 0, $this->partial_count_cb_called ); 1104 $this->assertSame( 1, $this->full_count_cb_called ); 1105 1106 wp_set_post_terms( $post_id, $partial_term_id, 'wp_tax_40351_partial_only' ); 1107 $this->assertSame( 1, $this->partial_count_cb_called ); 1108 $this->assertSame( 1, $this->full_count_cb_called ); 1109 1110 wp_set_post_terms( $post_id, $both_term_id, 'wp_tax_40351_both' ); 1111 $this->assertSame( 2, $this->partial_count_cb_called ); 1112 $this->assertSame( 1, $this->full_count_cb_called ); 1113 1114 // Force a full recount `$both_term` to ensure callback is called. 1115 wp_update_term_count( $both_term_ttid, 'wp_tax_40351_both' ); 1116 $this->assertSame( 2, $this->full_count_cb_called ); 1117 } 1118 1119 /** 1120 * Custom full count callback for `test_register_taxonomy_counting_callbacks()`. 1121 * 1122 * For the purpose of this test no database modifications are required, therefore 1123 * the parameters passed are unused. 1124 * 1125 * @param int|array $tt_ids The term_taxonomy_id of the terms. 1126 * @param string $taxonomy The context of the term. 1127 */ 1128 function cb_register_taxonomy_full_count_callback( $tt_ids, $taxonomy ) { 1129 $this->full_count_cb_called++; 1130 } 1131 1132 /** 1133 * Custom partial count callback for `test_register_taxonomy_counting_callbacks()`. 1134 * 1135 * For the purpose of this test no database modifications are required, therefore 1136 * the parameters passed are unused. 1137 * 1138 * @param int|array $tt_ids The term_taxonomy_id of the terms. 1139 * @param string $taxonomy The context of the term. 1140 * @param int $modify_by By how many the term count is to be modified. 1141 */ 1142 function cb_register_taxonomy_partial_count_callback( $tt_ids, $taxonomy, $modify_by ) { 1143 $this->partial_count_cb_called++; 1144 } 1033 1145 }
Note: See TracChangeset
for help on using the changeset viewer.