Edit File by line
/home/zeestwma/richards.../wp-inclu...
File: class-wp-term-query.php
<?php
[0] Fix | Delete
[1] Fix | Delete
/**
[2] Fix | Delete
* Taxonomy API: WP_Term_Query class.
[3] Fix | Delete
*
[4] Fix | Delete
* @package WordPress
[5] Fix | Delete
* @subpackage Taxonomy
[6] Fix | Delete
* @since 4.6.0
[7] Fix | Delete
*/
[8] Fix | Delete
[9] Fix | Delete
/**
[10] Fix | Delete
* Class used for querying terms.
[11] Fix | Delete
*
[12] Fix | Delete
* @since 4.6.0
[13] Fix | Delete
*
[14] Fix | Delete
* @see WP_Term_Query::__construct() for accepted arguments.
[15] Fix | Delete
*/
[16] Fix | Delete
#[AllowDynamicProperties]
[17] Fix | Delete
class WP_Term_Query {
[18] Fix | Delete
[19] Fix | Delete
/**
[20] Fix | Delete
* SQL string used to perform database query.
[21] Fix | Delete
*
[22] Fix | Delete
* @since 4.6.0
[23] Fix | Delete
* @var string
[24] Fix | Delete
*/
[25] Fix | Delete
public $request;
[26] Fix | Delete
[27] Fix | Delete
/**
[28] Fix | Delete
* Metadata query container.
[29] Fix | Delete
*
[30] Fix | Delete
* @since 4.6.0
[31] Fix | Delete
* @var WP_Meta_Query A meta query instance.
[32] Fix | Delete
*/
[33] Fix | Delete
public $meta_query = false;
[34] Fix | Delete
[35] Fix | Delete
/**
[36] Fix | Delete
* Metadata query clauses.
[37] Fix | Delete
*
[38] Fix | Delete
* @since 4.6.0
[39] Fix | Delete
* @var array
[40] Fix | Delete
*/
[41] Fix | Delete
protected $meta_query_clauses;
[42] Fix | Delete
[43] Fix | Delete
/**
[44] Fix | Delete
* SQL query clauses.
[45] Fix | Delete
*
[46] Fix | Delete
* @since 4.6.0
[47] Fix | Delete
* @var array
[48] Fix | Delete
*/
[49] Fix | Delete
protected $sql_clauses = array(
[50] Fix | Delete
'select' => '',
[51] Fix | Delete
'from' => '',
[52] Fix | Delete
'where' => array(),
[53] Fix | Delete
'orderby' => '',
[54] Fix | Delete
'limits' => '',
[55] Fix | Delete
);
[56] Fix | Delete
[57] Fix | Delete
/**
[58] Fix | Delete
* Query vars set by the user.
[59] Fix | Delete
*
[60] Fix | Delete
* @since 4.6.0
[61] Fix | Delete
* @var array
[62] Fix | Delete
*/
[63] Fix | Delete
public $query_vars;
[64] Fix | Delete
[65] Fix | Delete
/**
[66] Fix | Delete
* Default values for query vars.
[67] Fix | Delete
*
[68] Fix | Delete
* @since 4.6.0
[69] Fix | Delete
* @var array
[70] Fix | Delete
*/
[71] Fix | Delete
public $query_var_defaults;
[72] Fix | Delete
[73] Fix | Delete
/**
[74] Fix | Delete
* List of terms located by the query.
[75] Fix | Delete
*
[76] Fix | Delete
* @since 4.6.0
[77] Fix | Delete
* @var array
[78] Fix | Delete
*/
[79] Fix | Delete
public $terms;
[80] Fix | Delete
[81] Fix | Delete
/**
[82] Fix | Delete
* Constructor.
[83] Fix | Delete
*
[84] Fix | Delete
* Sets up the term query, based on the query vars passed.
[85] Fix | Delete
*
[86] Fix | Delete
* @since 4.6.0
[87] Fix | Delete
* @since 4.6.0 Introduced 'term_taxonomy_id' parameter.
[88] Fix | Delete
* @since 4.7.0 Introduced 'object_ids' parameter.
[89] Fix | Delete
* @since 4.9.0 Added 'slug__in' support for 'orderby'.
[90] Fix | Delete
* @since 5.1.0 Introduced the 'meta_compare_key' parameter.
[91] Fix | Delete
* @since 5.3.0 Introduced the 'meta_type_key' parameter.
[92] Fix | Delete
* @since 6.4.0 Introduced the 'cache_results' parameter.
[93] Fix | Delete
*
[94] Fix | Delete
* @param string|array $query {
[95] Fix | Delete
* Optional. Array or query string of term query parameters. Default empty.
[96] Fix | Delete
*
[97] Fix | Delete
* @type string|string[] $taxonomy Taxonomy name, or array of taxonomy names, to which results
[98] Fix | Delete
* should be limited.
[99] Fix | Delete
* @type int|int[] $object_ids Object ID, or array of object IDs. Results will be
[100] Fix | Delete
* limited to terms associated with these objects.
[101] Fix | Delete
* @type string $orderby Field(s) to order terms by. Accepts:
[102] Fix | Delete
* - Term fields ('name', 'slug', 'term_group', 'term_id', 'id',
[103] Fix | Delete
* 'description', 'parent', 'term_order'). Unless `$object_ids`
[104] Fix | Delete
* is not empty, 'term_order' is treated the same as 'term_id'.
[105] Fix | Delete
* - 'count' to use the number of objects associated with the term.
[106] Fix | Delete
* - 'include' to match the 'order' of the `$include` param.
[107] Fix | Delete
* - 'slug__in' to match the 'order' of the `$slug` param.
[108] Fix | Delete
* - 'meta_value'
[109] Fix | Delete
* - 'meta_value_num'.
[110] Fix | Delete
* - The value of `$meta_key`.
[111] Fix | Delete
* - The array keys of `$meta_query`.
[112] Fix | Delete
* - 'none' to omit the ORDER BY clause.
[113] Fix | Delete
* Default 'name'.
[114] Fix | Delete
* @type string $order Whether to order terms in ascending or descending order.
[115] Fix | Delete
* Accepts 'ASC' (ascending) or 'DESC' (descending).
[116] Fix | Delete
* Default 'ASC'.
[117] Fix | Delete
* @type bool|int $hide_empty Whether to hide terms not assigned to any posts. Accepts
[118] Fix | Delete
* 1|true or 0|false. Default 1|true.
[119] Fix | Delete
* @type int[]|string $include Array or comma/space-separated string of term IDs to include.
[120] Fix | Delete
* Default empty array.
[121] Fix | Delete
* @type int[]|string $exclude Array or comma/space-separated string of term IDs to exclude.
[122] Fix | Delete
* If `$include` is non-empty, `$exclude` is ignored.
[123] Fix | Delete
* Default empty array.
[124] Fix | Delete
* @type int[]|string $exclude_tree Array or comma/space-separated string of term IDs to exclude
[125] Fix | Delete
* along with all of their descendant terms. If `$include` is
[126] Fix | Delete
* non-empty, `$exclude_tree` is ignored. Default empty array.
[127] Fix | Delete
* @type int|string $number Maximum number of terms to return. Accepts ''|0 (all) or any
[128] Fix | Delete
* positive number. Default ''|0 (all). Note that `$number` may
[129] Fix | Delete
* not return accurate results when coupled with `$object_ids`.
[130] Fix | Delete
* See #41796 for details.
[131] Fix | Delete
* @type int $offset The number by which to offset the terms query. Default empty.
[132] Fix | Delete
* @type string $fields Term fields to query for. Accepts:
[133] Fix | Delete
* - 'all' Returns an array of complete term objects (`WP_Term[]`).
[134] Fix | Delete
* - 'all_with_object_id' Returns an array of term objects
[135] Fix | Delete
* with the 'object_id' param (`WP_Term[]`). Works only
[136] Fix | Delete
* when the `$object_ids` parameter is populated.
[137] Fix | Delete
* - 'ids' Returns an array of term IDs (`int[]`).
[138] Fix | Delete
* - 'tt_ids' Returns an array of term taxonomy IDs (`int[]`).
[139] Fix | Delete
* - 'names' Returns an array of term names (`string[]`).
[140] Fix | Delete
* - 'slugs' Returns an array of term slugs (`string[]`).
[141] Fix | Delete
* - 'count' Returns the number of matching terms (`int`).
[142] Fix | Delete
* - 'id=>parent' Returns an associative array of parent term IDs,
[143] Fix | Delete
* keyed by term ID (`int[]`).
[144] Fix | Delete
* - 'id=>name' Returns an associative array of term names,
[145] Fix | Delete
* keyed by term ID (`string[]`).
[146] Fix | Delete
* - 'id=>slug' Returns an associative array of term slugs,
[147] Fix | Delete
* keyed by term ID (`string[]`).
[148] Fix | Delete
* Default 'all'.
[149] Fix | Delete
* @type string|string[] $name Name or array of names to return term(s) for.
[150] Fix | Delete
* Default empty.
[151] Fix | Delete
* @type string|string[] $slug Slug or array of slugs to return term(s) for.
[152] Fix | Delete
* Default empty.
[153] Fix | Delete
* @type int|int[] $term_taxonomy_id Term taxonomy ID, or array of term taxonomy IDs,
[154] Fix | Delete
* to match when querying terms.
[155] Fix | Delete
* @type bool $hierarchical Whether to include terms that have non-empty descendants
[156] Fix | Delete
* (even if `$hide_empty` is set to true). Default true.
[157] Fix | Delete
* @type string $search Search criteria to match terms. Will be SQL-formatted with
[158] Fix | Delete
* wildcards before and after. Default empty.
[159] Fix | Delete
* @type string $name__like Retrieve terms with criteria by which a term is LIKE
[160] Fix | Delete
* `$name__like`. Default empty.
[161] Fix | Delete
* @type string $description__like Retrieve terms where the description is LIKE
[162] Fix | Delete
* `$description__like`. Default empty.
[163] Fix | Delete
* @type bool $pad_counts Whether to pad the quantity of a term's children in the
[164] Fix | Delete
* quantity of each term's "count" object variable.
[165] Fix | Delete
* Default false.
[166] Fix | Delete
* @type string $get Whether to return terms regardless of ancestry or whether the
[167] Fix | Delete
* terms are empty. Accepts 'all' or '' (disabled).
[168] Fix | Delete
* Default ''.
[169] Fix | Delete
* @type int $child_of Term ID to retrieve child terms of. If multiple taxonomies
[170] Fix | Delete
* are passed, `$child_of` is ignored. Default 0.
[171] Fix | Delete
* @type int $parent Parent term ID to retrieve direct-child terms of.
[172] Fix | Delete
* Default empty.
[173] Fix | Delete
* @type bool $childless True to limit results to terms that have no children.
[174] Fix | Delete
* This parameter has no effect on non-hierarchical taxonomies.
[175] Fix | Delete
* Default false.
[176] Fix | Delete
* @type string $cache_domain Unique cache key to be produced when this query is stored in
[177] Fix | Delete
* an object cache. Default 'core'.
[178] Fix | Delete
* @type bool $cache_results Whether to cache term information. Default true.
[179] Fix | Delete
* @type bool $update_term_meta_cache Whether to prime meta caches for matched terms. Default true.
[180] Fix | Delete
* @type string|string[] $meta_key Meta key or keys to filter by.
[181] Fix | Delete
* @type string|string[] $meta_value Meta value or values to filter by.
[182] Fix | Delete
* @type string $meta_compare MySQL operator used for comparing the meta value.
[183] Fix | Delete
* See WP_Meta_Query::__construct() for accepted values and default value.
[184] Fix | Delete
* @type string $meta_compare_key MySQL operator used for comparing the meta key.
[185] Fix | Delete
* See WP_Meta_Query::__construct() for accepted values and default value.
[186] Fix | Delete
* @type string $meta_type MySQL data type that the meta_value column will be CAST to for comparisons.
[187] Fix | Delete
* See WP_Meta_Query::__construct() for accepted values and default value.
[188] Fix | Delete
* @type string $meta_type_key MySQL data type that the meta_key column will be CAST to for comparisons.
[189] Fix | Delete
* See WP_Meta_Query::__construct() for accepted values and default value.
[190] Fix | Delete
* @type array $meta_query An associative array of WP_Meta_Query arguments.
[191] Fix | Delete
* See WP_Meta_Query::__construct() for accepted values.
[192] Fix | Delete
* }
[193] Fix | Delete
*/
[194] Fix | Delete
public function __construct( $query = '' ) {
[195] Fix | Delete
$this->query_var_defaults = array(
[196] Fix | Delete
'taxonomy' => null,
[197] Fix | Delete
'object_ids' => null,
[198] Fix | Delete
'orderby' => 'name',
[199] Fix | Delete
'order' => 'ASC',
[200] Fix | Delete
'hide_empty' => true,
[201] Fix | Delete
'include' => array(),
[202] Fix | Delete
'exclude' => array(),
[203] Fix | Delete
'exclude_tree' => array(),
[204] Fix | Delete
'number' => '',
[205] Fix | Delete
'offset' => '',
[206] Fix | Delete
'fields' => 'all',
[207] Fix | Delete
'name' => '',
[208] Fix | Delete
'slug' => '',
[209] Fix | Delete
'term_taxonomy_id' => '',
[210] Fix | Delete
'hierarchical' => true,
[211] Fix | Delete
'search' => '',
[212] Fix | Delete
'name__like' => '',
[213] Fix | Delete
'description__like' => '',
[214] Fix | Delete
'pad_counts' => false,
[215] Fix | Delete
'get' => '',
[216] Fix | Delete
'child_of' => 0,
[217] Fix | Delete
'parent' => '',
[218] Fix | Delete
'childless' => false,
[219] Fix | Delete
'cache_domain' => 'core',
[220] Fix | Delete
'cache_results' => true,
[221] Fix | Delete
'update_term_meta_cache' => true,
[222] Fix | Delete
'meta_query' => '',
[223] Fix | Delete
'meta_key' => '',
[224] Fix | Delete
'meta_value' => '',
[225] Fix | Delete
'meta_type' => '',
[226] Fix | Delete
'meta_compare' => '',
[227] Fix | Delete
);
[228] Fix | Delete
[229] Fix | Delete
if ( ! empty( $query ) ) {
[230] Fix | Delete
$this->query( $query );
[231] Fix | Delete
}
[232] Fix | Delete
}
[233] Fix | Delete
[234] Fix | Delete
/**
[235] Fix | Delete
* Parse arguments passed to the term query with default query parameters.
[236] Fix | Delete
*
[237] Fix | Delete
* @since 4.6.0
[238] Fix | Delete
*
[239] Fix | Delete
* @param string|array $query WP_Term_Query arguments. See WP_Term_Query::__construct() for accepted arguments.
[240] Fix | Delete
*/
[241] Fix | Delete
public function parse_query( $query = '' ) {
[242] Fix | Delete
if ( empty( $query ) ) {
[243] Fix | Delete
$query = $this->query_vars;
[244] Fix | Delete
}
[245] Fix | Delete
[246] Fix | Delete
$taxonomies = isset( $query['taxonomy'] ) ? (array) $query['taxonomy'] : null;
[247] Fix | Delete
[248] Fix | Delete
/**
[249] Fix | Delete
* Filters the terms query default arguments.
[250] Fix | Delete
*
[251] Fix | Delete
* Use {@see 'get_terms_args'} to filter the passed arguments.
[252] Fix | Delete
*
[253] Fix | Delete
* @since 4.4.0
[254] Fix | Delete
*
[255] Fix | Delete
* @param array $defaults An array of default get_terms() arguments.
[256] Fix | Delete
* @param string[] $taxonomies An array of taxonomy names.
[257] Fix | Delete
*/
[258] Fix | Delete
$this->query_var_defaults = apply_filters( 'get_terms_defaults', $this->query_var_defaults, $taxonomies );
[259] Fix | Delete
[260] Fix | Delete
$query = wp_parse_args( $query, $this->query_var_defaults );
[261] Fix | Delete
[262] Fix | Delete
$query['number'] = absint( $query['number'] );
[263] Fix | Delete
$query['offset'] = absint( $query['offset'] );
[264] Fix | Delete
[265] Fix | Delete
// 'parent' overrides 'child_of'.
[266] Fix | Delete
if ( 0 < (int) $query['parent'] ) {
[267] Fix | Delete
$query['child_of'] = false;
[268] Fix | Delete
}
[269] Fix | Delete
[270] Fix | Delete
if ( 'all' === $query['get'] ) {
[271] Fix | Delete
$query['childless'] = false;
[272] Fix | Delete
$query['child_of'] = 0;
[273] Fix | Delete
$query['hide_empty'] = 0;
[274] Fix | Delete
$query['hierarchical'] = false;
[275] Fix | Delete
$query['pad_counts'] = false;
[276] Fix | Delete
}
[277] Fix | Delete
[278] Fix | Delete
$query['taxonomy'] = $taxonomies;
[279] Fix | Delete
[280] Fix | Delete
$this->query_vars = $query;
[281] Fix | Delete
[282] Fix | Delete
/**
[283] Fix | Delete
* Fires after term query vars have been parsed.
[284] Fix | Delete
*
[285] Fix | Delete
* @since 4.6.0
[286] Fix | Delete
*
[287] Fix | Delete
* @param WP_Term_Query $query Current instance of WP_Term_Query.
[288] Fix | Delete
*/
[289] Fix | Delete
do_action( 'parse_term_query', $this );
[290] Fix | Delete
}
[291] Fix | Delete
[292] Fix | Delete
/**
[293] Fix | Delete
* Sets up the query and retrieves the results.
[294] Fix | Delete
*
[295] Fix | Delete
* The return type varies depending on the value passed to `$args['fields']`. See
[296] Fix | Delete
* WP_Term_Query::get_terms() for details.
[297] Fix | Delete
*
[298] Fix | Delete
* @since 4.6.0
[299] Fix | Delete
*
[300] Fix | Delete
* @param string|array $query Array or URL query string of parameters.
[301] Fix | Delete
* @return WP_Term[]|int[]|string[]|string Array of terms, or number of terms as numeric string
[302] Fix | Delete
* when 'count' is passed to `$args['fields']`.
[303] Fix | Delete
*/
[304] Fix | Delete
public function query( $query ) {
[305] Fix | Delete
$this->query_vars = wp_parse_args( $query );
[306] Fix | Delete
return $this->get_terms();
[307] Fix | Delete
}
[308] Fix | Delete
[309] Fix | Delete
/**
[310] Fix | Delete
* Retrieves the query results.
[311] Fix | Delete
*
[312] Fix | Delete
* The return type varies depending on the value passed to `$args['fields']`.
[313] Fix | Delete
*
[314] Fix | Delete
* The following will result in an array of `WP_Term` objects being returned:
[315] Fix | Delete
*
[316] Fix | Delete
* - 'all'
[317] Fix | Delete
* - 'all_with_object_id'
[318] Fix | Delete
*
[319] Fix | Delete
* The following will result in a numeric string being returned:
[320] Fix | Delete
*
[321] Fix | Delete
* - 'count'
[322] Fix | Delete
*
[323] Fix | Delete
* The following will result in an array of text strings being returned:
[324] Fix | Delete
*
[325] Fix | Delete
* - 'id=>name'
[326] Fix | Delete
* - 'id=>slug'
[327] Fix | Delete
* - 'names'
[328] Fix | Delete
* - 'slugs'
[329] Fix | Delete
*
[330] Fix | Delete
* The following will result in an array of numeric strings being returned:
[331] Fix | Delete
*
[332] Fix | Delete
* - 'id=>parent'
[333] Fix | Delete
*
[334] Fix | Delete
* The following will result in an array of integers being returned:
[335] Fix | Delete
*
[336] Fix | Delete
* - 'ids'
[337] Fix | Delete
* - 'tt_ids'
[338] Fix | Delete
*
[339] Fix | Delete
* @since 4.6.0
[340] Fix | Delete
*
[341] Fix | Delete
* @global wpdb $wpdb WordPress database abstraction object.
[342] Fix | Delete
*
[343] Fix | Delete
* @return WP_Term[]|int[]|string[]|string Array of terms, or number of terms as numeric string
[344] Fix | Delete
* when 'count' is passed to `$args['fields']`.
[345] Fix | Delete
*/
[346] Fix | Delete
public function get_terms() {
[347] Fix | Delete
global $wpdb;
[348] Fix | Delete
[349] Fix | Delete
$this->parse_query( $this->query_vars );
[350] Fix | Delete
$args = &$this->query_vars;
[351] Fix | Delete
[352] Fix | Delete
// Set up meta_query so it's available to 'pre_get_terms'.
[353] Fix | Delete
$this->meta_query = new WP_Meta_Query();
[354] Fix | Delete
$this->meta_query->parse_query_vars( $args );
[355] Fix | Delete
[356] Fix | Delete
/**
[357] Fix | Delete
* Fires before terms are retrieved.
[358] Fix | Delete
*
[359] Fix | Delete
* @since 4.6.0
[360] Fix | Delete
*
[361] Fix | Delete
* @param WP_Term_Query $query Current instance of WP_Term_Query (passed by reference).
[362] Fix | Delete
*/
[363] Fix | Delete
do_action_ref_array( 'pre_get_terms', array( &$this ) );
[364] Fix | Delete
[365] Fix | Delete
$taxonomies = (array) $args['taxonomy'];
[366] Fix | Delete
[367] Fix | Delete
// Save queries by not crawling the tree in the case of multiple taxes or a flat tax.
[368] Fix | Delete
$has_hierarchical_tax = false;
[369] Fix | Delete
if ( $taxonomies ) {
[370] Fix | Delete
foreach ( $taxonomies as $_tax ) {
[371] Fix | Delete
if ( is_taxonomy_hierarchical( $_tax ) ) {
[372] Fix | Delete
$has_hierarchical_tax = true;
[373] Fix | Delete
}
[374] Fix | Delete
}
[375] Fix | Delete
} else {
[376] Fix | Delete
// When no taxonomies are provided, assume we have to descend the tree.
[377] Fix | Delete
$has_hierarchical_tax = true;
[378] Fix | Delete
}
[379] Fix | Delete
[380] Fix | Delete
if ( ! $has_hierarchical_tax ) {
[381] Fix | Delete
$args['hierarchical'] = false;
[382] Fix | Delete
$args['pad_counts'] = false;
[383] Fix | Delete
}
[384] Fix | Delete
[385] Fix | Delete
// 'parent' overrides 'child_of'.
[386] Fix | Delete
if ( 0 < (int) $args['parent'] ) {
[387] Fix | Delete
$args['child_of'] = false;
[388] Fix | Delete
}
[389] Fix | Delete
[390] Fix | Delete
if ( 'all' === $args['get'] ) {
[391] Fix | Delete
$args['childless'] = false;
[392] Fix | Delete
$args['child_of'] = 0;
[393] Fix | Delete
$args['hide_empty'] = 0;
[394] Fix | Delete
$args['hierarchical'] = false;
[395] Fix | Delete
$args['pad_counts'] = false;
[396] Fix | Delete
}
[397] Fix | Delete
[398] Fix | Delete
/**
[399] Fix | Delete
* Filters the terms query arguments.
[400] Fix | Delete
*
[401] Fix | Delete
* @since 3.1.0
[402] Fix | Delete
*
[403] Fix | Delete
* @param array $args An array of get_terms() arguments.
[404] Fix | Delete
* @param string[] $taxonomies An array of taxonomy names.
[405] Fix | Delete
*/
[406] Fix | Delete
$args = apply_filters( 'get_terms_args', $args, $taxonomies );
[407] Fix | Delete
[408] Fix | Delete
// Avoid the query if the queried parent/child_of term has no descendants.
[409] Fix | Delete
$child_of = $args['child_of'];
[410] Fix | Delete
$parent = $args['parent'];
[411] Fix | Delete
[412] Fix | Delete
if ( $child_of ) {
[413] Fix | Delete
$_parent = $child_of;
[414] Fix | Delete
} elseif ( $parent ) {
[415] Fix | Delete
$_parent = $parent;
[416] Fix | Delete
} else {
[417] Fix | Delete
$_parent = false;
[418] Fix | Delete
}
[419] Fix | Delete
[420] Fix | Delete
if ( $_parent ) {
[421] Fix | Delete
$in_hierarchy = false;
[422] Fix | Delete
foreach ( $taxonomies as $_tax ) {
[423] Fix | Delete
$hierarchy = _get_term_hierarchy( $_tax );
[424] Fix | Delete
[425] Fix | Delete
if ( isset( $hierarchy[ $_parent ] ) ) {
[426] Fix | Delete
$in_hierarchy = true;
[427] Fix | Delete
}
[428] Fix | Delete
}
[429] Fix | Delete
[430] Fix | Delete
if ( ! $in_hierarchy ) {
[431] Fix | Delete
if ( 'count' === $args['fields'] ) {
[432] Fix | Delete
return 0;
[433] Fix | Delete
} else {
[434] Fix | Delete
$this->terms = array();
[435] Fix | Delete
return $this->terms;
[436] Fix | Delete
}
[437] Fix | Delete
}
[438] Fix | Delete
}
[439] Fix | Delete
[440] Fix | Delete
// 'term_order' is a legal sort order only when joining the relationship table.
[441] Fix | Delete
$_orderby = $this->query_vars['orderby'];
[442] Fix | Delete
if ( 'term_order' === $_orderby && empty( $this->query_vars['object_ids'] ) ) {
[443] Fix | Delete
$_orderby = 'term_id';
[444] Fix | Delete
}
[445] Fix | Delete
[446] Fix | Delete
$orderby = $this->parse_orderby( $_orderby );
[447] Fix | Delete
[448] Fix | Delete
if ( $orderby ) {
[449] Fix | Delete
$orderby = "ORDER BY $orderby";
[450] Fix | Delete
}
[451] Fix | Delete
[452] Fix | Delete
$order = $this->parse_order( $this->query_vars['order'] );
[453] Fix | Delete
[454] Fix | Delete
if ( $taxonomies ) {
[455] Fix | Delete
$this->sql_clauses['where']['taxonomy'] =
[456] Fix | Delete
"tt.taxonomy IN ('" . implode( "', '", array_map( 'esc_sql', $taxonomies ) ) . "')";
[457] Fix | Delete
}
[458] Fix | Delete
[459] Fix | Delete
if ( empty( $args['exclude'] ) ) {
[460] Fix | Delete
$args['exclude'] = array();
[461] Fix | Delete
}
[462] Fix | Delete
[463] Fix | Delete
if ( empty( $args['include'] ) ) {
[464] Fix | Delete
$args['include'] = array();
[465] Fix | Delete
}
[466] Fix | Delete
[467] Fix | Delete
$exclude = $args['exclude'];
[468] Fix | Delete
$exclude_tree = $args['exclude_tree'];
[469] Fix | Delete
$include = $args['include'];
[470] Fix | Delete
[471] Fix | Delete
$inclusions = '';
[472] Fix | Delete
if ( ! empty( $include ) ) {
[473] Fix | Delete
$exclude = '';
[474] Fix | Delete
$exclude_tree = '';
[475] Fix | Delete
$inclusions = implode( ',', wp_parse_id_list( $include ) );
[476] Fix | Delete
}
[477] Fix | Delete
[478] Fix | Delete
if ( ! empty( $inclusions ) ) {
[479] Fix | Delete
$this->sql_clauses['where']['inclusions'] = 't.term_id IN ( ' . $inclusions . ' )';
[480] Fix | Delete
}
[481] Fix | Delete
[482] Fix | Delete
$exclusions = array();
[483] Fix | Delete
if ( ! empty( $exclude_tree ) ) {
[484] Fix | Delete
$exclude_tree = wp_parse_id_list( $exclude_tree );
[485] Fix | Delete
$excluded_children = $exclude_tree;
[486] Fix | Delete
[487] Fix | Delete
foreach ( $exclude_tree as $extrunk ) {
[488] Fix | Delete
$excluded_children = array_merge(
[489] Fix | Delete
$excluded_children,
[490] Fix | Delete
(array) get_terms(
[491] Fix | Delete
array(
[492] Fix | Delete
'taxonomy' => reset( $taxonomies ),
[493] Fix | Delete
'child_of' => (int) $extrunk,
[494] Fix | Delete
'fields' => 'ids',
[495] Fix | Delete
'hide_empty' => 0,
[496] Fix | Delete
)
[497] Fix | Delete
)
[498] Fix | Delete
);
[499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function