管理员,使用INNER JOIN过滤帖子列表

时间:2016-01-05 16:40:28

标签: wordpress wordpress-plugin

我正在开发一个Wordpress插件,我创建了一些自定义帖子,我使用元数据将它们链接在一起。

在管理员方面,我希望能够使用这些关系过滤帖子列表。我想我需要使用INNER JOIN,但我不知道如何。

现在我只有:

add_filter( 'parse_query', 'mypostsfilteringfunction' );
function mypostsfilteringfunction( $query ){

        // if post_type matches : 
        // then I need to be able to add innerjoin into $query

}

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

通过以下方式实现我的目标:

add_filter( 'parse_query', 'mypostsfilteringfunction' );
function mypostsfilteringfunction( $query ){    
    // if post_type matches : 
    add_filter( 'posts_join', 'myplugin_addjointorequest' );
    add_filter( 'posts_where', 'myplugin_addwheretorequest' );
    add_filter( 'posts_request', 'myplugin_sqlprint' ); // for printing result
}
function myplugin_addjointorequest ($join){
    $join .= 'INNER JOIN ...'; 
    return $join;   
}
function myplugin_addwheretorequest ($where){
    $where .= 'AND ...'; 
    return $where;   
}
function myplugin_sqlprint( $request ) {
    echo $request;
    return $request;
}