Opened 12 years ago
Closed 10 years ago
#28439 closed enhancement (wontfix)
Add 'post_date' as a possible orderby argument to get_terms()
| Reported by: |
|
Owned by: | |
|---|---|---|---|
| Milestone: | Priority: | normal | |
| Severity: | normal | Version: | 3.9.1 |
| Component: | Taxonomy | Keywords: | has-patch needs-unit-tests |
| Focuses: | Cc: |
Description
There have been a couple of times where I needed to retrieve a list of taxonomy terms ordered by the post_date of their applicable posts. This patch considers post_date as a potential orderby argument value in get_terms().
Attachments (2)
Change History (7)
#1
follow-up:
↓ 2
@
12 years ago
How does this query behaves when a same term is applied to multiple posts?
Because joining on posts may return multiple times the same terms for instance.
#2
in reply to:
↑ 1
@
12 years ago
- Keywords has-patch added
Replying to lpointet:
How does this query behaves when a same term is applied to multiple posts?
Because joining on posts may return multiple times the same terms for instance.
You're absolutely right! 28439.2.patch ensures SELECT DISTINCT to avoid duplicate terms.
#3
@
12 years ago
- Keywords needs-unit-tests added
Here's an EXPLAIN from my test site which admittedly only has 4 Categories and 3 Posts:
EXPLAIN SELECT t.*, tt.*
FROM wpsvn_terms AS t
INNER JOIN wpsvn_term_taxonomy AS tt
ON t.term_id = tt.term_id
JOIN wpsvn_term_relationships AS tr
ON tr.term_taxonomy_id = tt.term_taxonomy_id
JOIN wpsvn_posts AS p
ON p.ID = tr.object_id
WHERE tt.taxonomy IN ('category')
ORDER BY p.post_date DESC
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
| 1 | SIMPLE | tt | ALL | PRIMARY,term_id_taxonomy,taxonomy | NULL | NULL | NULL | 4 | Using where; Using temporary; Using filesort |
| 1 | SIMPLE | tr | ref | PRIMARY,term_taxonomy_id | term_taxonomy_id | 8 | wpsvn.tt.term_taxonomy_id | 1 | Using index |
| 1 | SIMPLE | t | ALL | PRIMARY | NULL | NULL | NULL | 4 | Using where; Using join buffer |
| 1 | SIMPLE | p | eq_ref | PRIMARY | PRIMARY | 8 | wpsvn.tr.object_id | 1 |
#4
@
11 years ago
See https://core.trac.wordpress.org/ticket/18106#comment:7. I'd make the same argument here: get_terms() seems like the wrong place for it, and it's hard to see how the abstraction would work in wp_get_object_terms().
#5
@
10 years ago
- Milestone Awaiting Review deleted
- Resolution set to wontfix
- Status changed from new to closed
Gonna close this bad boy for the reasons outlined in #18106. You can finagle it by doing get_posts( array( 'tax_query' => ... ) ) to get the post order, then looping through results, grabbing term IDs (which will have been loaded into the cache, so no real overhead added), and then passing to get_terms( 'my_taxonomy', array( 'orderby' => 'include', 'include' => $term_ids ) ).
Add orderby argument of post_date to get_terms()