所以我一直在尝试像疯子一样,用meta_values组织我的活动(这些帖子)绝对没有成功:
这是代码(尝试通过meta_key组织Tribe事件“kind”,其值为A,B或C)
<?php
global $post;
$current_date = date('j M Y');
$end_date = $current_date;
$get_posts = tribe_get_events(array(
'start_date'=>$end_date,
'end_date'=>$end_date,
'posts_per_page'=>3,
'order'=>'ASC',
'meta_key'=>'kind',
'orderby'=>'meta_value', // Each post either has A, B, or C, set as it's meta value, yet it displays the post by date (which is normal), but ignores the meta_values
));
foreach($get_posts as $post) {setup_postdata($post);
?>
<li>
<p class="date">
<a href="<?php the_permalink(); ?>"><span class="month"> <?php echo tribe_get_start_date($post->ID, false, 'M'); ?></span></a>
<a href="<?php the_permalink(); ?>"><span class="day"> <?php echo date('d'); ?></span></a>
</p>
<p class="info">
<a href="<?php the_permalink(); ?>"><?php the_title(); ?><i class="icon-chevron-right"></i></a> <?php the_field('kind'); ?> <br><?php echo substr(get_the_excerpt(), 0, 50); ?>...</p>
<div class="clear"></div>
</li>
<?php } //endforeach ?>
<?php wp_reset_query(); ?>
</ul>
<div class="clear"></div>
即使我尝试运行普通查询并对其进行排序仍然无法正常工作(只需要将tribe_get_events覆盖为orderby过滤器。
$loop = new WP_Query(array('post_type' => 'tribe_events', 'orderby'=> 'meta_value', 'meta_key'=>'kind'));
但这仍然没有给我带来任何好处。
基本上我有三种帖子,我想今天的帖子出现,但我希望它们按类型排序。其中类型A首先显示,B秒显示,C显示第三。因为这是这些事件的优先事项。所以结果应该显示,AAB,但在图像中你可以看到它只是显示ABA(发布时发布的订购)
http://cl.ly/image/0W2b2I270d3v
花了两天没有结果。我一直在这个网站和谷歌/要求其他开发人员没有可靠的建议:(
答案 0 :(得分:0)
好的,我没有这个插件的经验,但我可以提供我的初步观察,希望它可以提供帮助。
public / template-tags / general.php在第167行定义了tribe_get_events(),看起来它喜欢使用TribeEventsQuery :: getEvents()。该静态函数在第645行的lib / tribe-event-query.class.php中定义,并且有一个$ defaults数组,按$ event_date排序。看起来传递的数组参数被默认数组覆盖。再一次,没有这个插件的经验。我刚看到@nathansmith关于它的推文并快速下载它以查看文件。我不知道为什么自定义WP_Query不起作用。
如果这没有用,我可以深入研究一下。
编辑:顺便说一下路径是相对于插件目录的。
答案 1 :(得分:0)
我认为亚当可能走在正确的轨道上。我不知道插件是如何做到这一点的,但我运行了一个普通的查询并查看了结果中出现的参数:tribe_events强制命令为event_date的ASC,即使我提供了参数。
您可能最好在结果数组上进行自己的排序。
答案 2 :(得分:0)
经过长时间的寻找和学习(我不是专家),我找到了这个Modern Tribe插件的终极解决方案。 问题是,插件希望你使用他们的函数来获取帖子,但是如果你想在主查询中包含帖子怎么办 - 这使你能够使用have_posts()。 当您尝试为该查询设置orderby时 - 它不会发生变化。
所以,这是您在网上找到的最佳解决方案 - 您应该更新lib / tribe-event-query.class.php中的主类函数,如下所述:http://blog.timoor.info/2015/02/wordpress-posttype-tribeevents-orderby.html
然后你的
query_posts(array('post_type'=> 'tribe_events','orderby' => 'EventRating',
.....
最终会工作