在写下我的问题后不久,Theme Foundry写道a blog entry 这回答了我的问题。解决方案是add_action
都是sposts_join
和posts_where
. 每一个都将子句作为参数,您可以使用自己的条件附加这些子句并返回附加的子句。
就我而言,我只需要限制join
在posts_join
回调:
$join .= "
LEFT JOIN " . $wpdb->postmeta . " AS pm
ON (" . $wpdb->posts . ".ID = pm.post_id AND
pm.meta_key = \'post_meta_key_here\')
LEFT JOIN " . $wpdb->usermeta . " AS um
ON (" . $wpdb->posts . ".post_author = um.user_id AND
um.meta_key = \'author_meta_key_here\') "
。。。以及
where
中的条款
posts_where
回调。。。
$where .= "
AND ((pm.meta_key = \'post_meta_key_here\' AND pm.meta_value = 0)
OR pm.meta_id IS NULL)
AND ((um.meta_key = \'author_meta_key_here\' AND um.meta_value = 0)
OR um.umeta_id IS NULL) ";
请参见
the blog post 了解更多信息。