按定制表和乘法排序

时间:2019-03-10 作者:Christopher

我想通过乘以自定义表中的值来排序帖子。

+---------+------+------+------+------+------+
| 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 );
我的问题是,这种连接和乘法的方法是正确的还是有更好的方法?

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

从WPs的角度来看,它没有什么问题。如果您想用自己的表连接帖子,并更改排序方式,那么这就是解决方法。

我想唯一有点棘手的是posts_join_paged 而不是posts_join - 如果出现问题,它会使调试变得更加困难,但它也会使调试更加优化,所以这没有什么问题。

对于这种方法,有两件事让我有点担心:

如果某些帖子的自定义表中没有行,这会导致正确的顺序吗