按POST_META和(作者)USER_META定制WP_QUERY ORDER

时间:2015-05-10 作者:Michael Presečan

我有一个在谷歌和其他网站上找不到的问题。将问题置于上下文中。我正在制作一个wordpress网站,用户可以在其中放置他们的导师列表,以提供教程,并且我正在实现对导师的自我评估和听力评估系统。因此,我有一个tutor\\u列表,每个tutor\\u列表都有一个“post\\u得分”元值,每个tutor(放置教程的用户)都有一个名为“user\\u分”的用户元值。

所以我需要一个WP_Query 将从数据库中获取所有已发布的tutor\\u列表,但sorted bypost\\u得分+ 用户点(user\\u points)。只是强调一下,“post\\u得分”是属于“post\\u类型”的“post\\u meta”,而“user\\u points”是该帖子作者的“user\\u meta”(tutor\\u listing)。我还需要在循环中显示该值。

我可以通过以下方式获得所有tutor\\u列表

$args = array(
    \'post_type\' => \'job_listing\',
    \'post_status\' => \'publish\'
);
$query = new WP_Query( $args );
我可以从自定义wordpress sql查询中获得如下结果:

SELECT p1.ID, p1.post_author, p1.post_title, p1.post_date, (um1.meta_value + pm1.meta_value) AS total_score
FROM $wpdb->posts p1
    JOIN $wpdb->users u1 ON (p1.post_author = u1.ID)
    JOIN $wpdb->usermeta um1 ON (um1.user_id = u1.ID)
    JOIN $wpdb->postmeta pm1 ON (pm1.post_id = p1.ID)
WHERE p1.post_type = \'tutor_listing\'
AND p1.post_status = \'publish\'
AND um1.meta_key = \'user_points\'
AND pm1.meta_key = \'post_score\'";
WP\\U查询能否提供这样的功能?我需要WP\\u查询来使用它的所有额外功能,如分页等。或者,是否有一种方法可以将使用自定义sql得到的所有结果传递给WP\\U查询对象?

非常感谢。

2 个回复
SO网友:luukvhoudt

WordPress 4.0允许您指定多个orderby参数,并独立设置每个参数的顺序。

怎么做?只需进行多次引用,这里有一种方法可以做到这一点。

$args = array(
    \'orderby\' = > array(
        \'title\' => \'ASC\',
        \'date\' => \'DESC\',
    )
);

Learn more here...

但只有在WordPress 4.2之后,才有可能使用元值实现这一点。Have a look at this post.

SO网友:RiotAct

您可以使用wpdb,但仍然可以获得分页功能。以下是关于该主题的一个很好的答案:

WordPress Paginate $wpdb->get_results

结束

相关推荐

Add jQuery to WordPress page

我需要将jQuery库添加到WordPress页面。该页面由插件短代码呈现。我已经使用了以下方法,但我认为它对我的jQuery脚本不起作用。我试图在插件名称和版本所在的主插件文件中添加以下脚本。设计不起作用:function my_init() { if (!is_admin()) { wp_enqueue_script(\'jquery\'); } } add_action(\'init\', \'my_init\');