我想通过乘以自定义表中的值来排序帖子。
+---------+------+------+------+------+------+
| post_id | a | b | c | d | e |
+---------+------+------+------+------+------+
| 1 | 0.24 | 0.34 | 0.28 | 0.23 | 0.29 |
+---------+------+------+------+------+------+
| 2 | 0.25 | 0.33 | 0.26 | 0.31 | 0.31 |
+---------+------+------+------+------+------+
| 3 | 0.27 | 0.31 | 0.32 | 0.28 | 0.25 |
+---------+------+------+------+------+------+
我使用以下代码,它似乎工作正常:
add_filter(\'posts_join_paged\', function( $join, $query ) {
global $wpdb;
$join .= "LEFT JOIN {$wpdb->prefix}rates ON {$wpdb->prefix}rates.post_id = {$wpdb->prefix}posts.ID";
return $join;
}, 10, 2 );
add_filter(\'posts_orderby\', function( $orderby, $query ) {
global $wpdb;
$orderby = "{$wpdb->prefix}rates.a*c*e ASC";
return $orderby;
}, 10, 2 );
我的问题是,这种连接和乘法的方法是正确的还是有更好的方法?
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成
从WPs的角度来看,它没有什么问题。如果您想用自己的表连接帖子,并更改排序方式,那么这就是解决方法。
我想唯一有点棘手的是posts_join_paged
而不是posts_join
- 如果出现问题,它会使调试变得更加困难,但它也会使调试更加优化,所以这没有什么问题。
对于这种方法,有两件事让我有点担心:
如果某些帖子的自定义表中没有行,这会导致正确的顺序吗