Ticket #1368 (closed enhancement: fixed)
Should apply "posts_where" filter in get_archives
| Reported by: |
|
Owned by: |
|
|---|---|---|---|
| Priority: | normal | Milestone: | 2.2 |
| Component: | Administration | Version: | 1.5.1 |
| Severity: | normal | Keywords: | has-patch |
| Cc: |
Description
There is currently no hook for plugins wishing to modify the SQL queries for archives (i.e. like posts_where or post_join)
Attachments
Change History
I had a patch for this laying around. Well, it's for 1.5.1.2 and it applies both "posts_where" and "posts_join". I hope you don't mind. Please be gentle, I'm new here.
I just realised the patch above is flawed. The names "posts_join" and "posts_where" should not be reused as there would be no good way to tell from where the handler was called, and thus what context to filter for.
I renamed the filters to "archive_join" and "archive_where" and submitted an updated patch.
- Severity changed from minor to normal
I think that the severity is not "minor". Without this fix, plugins like my category access plugin cannot properly filter posts. In my case, as a result of this problem protected posts cannot be properly excluded from lists returned by get_archives.
Hm... I seem to have the power to up the severity to "normal", so I guess I'll do so. Sorry if I'm overstepping my authority.
coppit, will something like this suffice:
$query = "SELECT blah blah blah";
$query = apply_filters('get_archives_query', $query, $args);
If so, want to cook up a patch?
Would work for my plugin (I'm hooking into the query filter and relying on matching the exact sql)
comment:13
westi — 5 years ago
- Keywords has-patch added
- Owner changed from ryan to westi
- Status changed from new to assigned
- Type changed from defect to enhancement
I have updated the patch to apply to current trunk.
Rather than a single query filter I prefer the WHERE and JOIN filters like we have elsewhere to make sure people don't break the required filtering dependant on the type of archive links being displayed
comment:14
follow-up:
↓ 16
ryan — 5 years ago
WHERE needs to come after JOIN. There's a comma missing in one of the apply_filters calls. Let's pass $r to the filters.
comment:16
in reply to:
↑ 14
westi — 5 years ago
Replying to ryan:
WHERE needs to come after JOIN. There's a comma missing in one of the apply_filters calls. Let's pass $r to the filters.
That'll teach me for trying to cook up a patch just before I went to bed!
Fixed patch incoming (and I'll have time to testing this time too!)
-
attachment
test_plugin.php
added
Example plugin to test with just changes the WHERE
