我在Wordpress中使用自定义帖子类型的''出版物。"最初,每个"出版物"被分配到单个"类别,"让它们按类别显示很简单......
$args = array( 'post_type' => 'publications', 'meta_key' => 'publications_category', 'orderby' => 'meta_value', 'order' => 'ASC');
$loop = new WP_Query( $args );
然后客户决定他们要分配相同的"出版物"到多个"类别,"我的meta_key成了一个数组。现在我无法获得"出版物"按"类别按字母顺序排序。"
因为我的meta_key现在是一个数组,所以我删除了' meta_key',' order_by'和'命令'来自查询。这就是我一直在测试的......
<?php
$args = array( 'post_type' => 'publications');
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
$cp_category = get_post_meta($post->ID, 'publications_categories', true); // assign a var to the array
foreach ($cp_category as $category) { // iterate through the array
the_title(); // print the title
echo '<br><br>' . $category . '<br><br>'; // print the category
}
endwhile;
?>
我在数组上尝试了各种sort()函数而没有运气。
共有六个类别。值为字符串:&#39; cabg_vs_opcab&#39;,&#39; high_risk_patients&#39;,&#39; death_and_morbidity&#39;,&#39; stroke&#39;,&#39; clampless_beating_heart&#39;,和经济学。&#39;
这是输出的样子。我添加了一个print_r()来遍历每个条目上面的数组:
http://offpump.com/clinical-publications/
我想要做的就是按照他们的类别订购这些条目,所以我希望有办法做到这一点。
感谢您提供任何帮助或建议!
答案 0 :(得分:2)
从数据库中检索后,不应按字母顺序对它们进行排序。
为避免任何重复处理,您应该预先获取它们。
快速搜索让我了解了wordpress查询的语法:
$args = array(
'post_type' => 'post',
'meta_key' => 'pb_issue_featured',
'orderby' => 'meta_value',
'order' => 'DESC',
'post_status' => 'publish',
'posts_per_page' => $posts,
'paged' => $paged,
'meta_query' => array(
array(
'key' => 'headline',
'value' => 1,
'compare' => '!='
)
)
);
$q = new WP_Query($args);
https://wordpress.stackexchange.com/questions/109849/order-by-desc-asc-in-custom-wp-query
答案 1 :(得分:0)
因为唯一对我有用的'compare'参数是“LIKE”,我最终使用它。页面/模板有一个循环用于每个“LIKE”查询 - 总共六个 - 并且它工作正常b / c没有那么多帖子。
然而,我决心找到一个更好的解决方案,当我到达那里时,我会回来发布它。
感谢所有帮助过的人。