好吧,如果有人在搜索并试图找到一种方法来完成我在这里所做的事情,我自己就想出来了。
我的任务是:我有一个名为vehicle的自定义post类型,有两个分类法,车辆制造商和车辆模型。我需要按制造商的字母顺序显示所有帖子,然后按型号显示,所以在列表中很有意义,例如:奥迪A1、奥迪A4、宝马120等等。
只按一种分类法订购很容易,但如果我只按制造商订购,我的帖子会显示奥迪A4、奥迪A1、奥迪A3。
我通过这样做解决了这个问题。
首先,我将定期获取get\\U结果,以便获得所有制造商的字母顺序:
$makers_list = $wpdb->get_results("SELECT
GROUP_CONCAT(pm.post_id ) as id_carro, tm.name as maker
FROM wpav_postmeta pm
INNER JOIN wpav_terms tm ON tm.term_id = pm.meta_value
WHERE pm.meta_key=\'make\'
GROUP BY tm.name
ORDER BY tm.name
");
mysql的“GROUP\\u CONTACT”功能将返回帖子ID列表,如19、49、59、83、58395394等
然后,我对每个制造商进行foreach,并获得特定制造商的车辆订单列表,按车型分类法排序。
foreach ( $makers_list as $maker ) {
$vehicle_list = $wpdb->get_results("SELECT tm.name as model , pm.post_id
FROM wpav_postmeta pm
INNER JOIN wpav_terms tm ON tm.term_id = pm.meta_value
WHERE pm.post_id IN (" . $fabr->vehicle_id . ") and pm.meta_key=\'model\'
ORDER BY model
");
那么,这只是为每辆车做另一个foreach的问题
foreach ( $vehicle_list as $vehicle ) {
$status_post = get_post_status($vehicle->post_id);
$type_post = get_post_type($vehicle->post_id);
if ( $status_post == \'publish\' && $type_post == \'vehicle\') {
$post = get_post($vehicle->post_id);
正如你所看到的,我正在检查帖子是否已发布,它是否是正确的帖子类型,然后我设置了post变量,它完成了,之后是正常的wordpress循环。
希望我能帮上忙。