#23208 closed defect (bug) (fixed)
Incorrect variable name for comment meta queries
| Reported by: | danielbachhuber | Owned by: | nacin |
|---|---|---|---|
| Priority: | normal | Milestone: | 3.5.1 |
| Component: | Comments | Version: | 3.5 |
| Severity: | normal | Keywords: | |
| Cc: | Focuses: |
Description
An error notice I saw using the Liveblog plugin:
Undefined variable: q in /Users/danielbachhuber/wp/wp-includes/comment.php on line 299
traces back to r22074 where the following is added:
// Parse meta query $this->meta_query = new WP_Meta_Query(); $this->meta_query->parse_query_vars( $this->query_vars );
but then is used later as:
if ( ! empty( $this->query_vars['meta_key'] ) ) {
$allowed_keys[] = $q['meta_key'];
$allowed_keys[] = 'meta_value';
$allowed_keys[] = 'meta_value_num';
}
$ordersby = array_intersect( $ordersby, $allowed_keys );
foreach ( $ordersby as $key => $value ) {
if ( $value == $q['meta_key'] || $value == 'meta_value' ) {
$ordersby[ $key ] = "$wpdb->commentmeta.meta_value";
} elseif ( $value == 'meta_value_num' ) {
$ordersby[ $key ] = "$wpdb->commentmeta.meta_value+0";
}
}
}
Something like the patch attached resolves the error, but this would probably benefit from unit tests too.
Attachments (1)
Change History (9)
#3
@
14 years ago
Patch is incorrect; this is a case of taking $q and replacing it with $this->query_vars. $this->query_vars['meta_key'] is correct there, not 'meta_key'.
#7
@
14 years ago
In 1191/tests:
#8
@
14 years ago
- Keywords needs-patch removed
Replying to danielbachhuber:
Actually, it looks like there are already unit tests for this. I'll see if I can track down further why they don't fail when I have a moment.
The tests only had assertions for ordering by meta value. To trigger the bug, you need to order by meta key, which is functionally the same.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)
Actually, it looks like there are already unit tests for this. I'll see if I can track down further why they don't fail when I have a moment.