0

因此,我一直像疯子一样尝试通过其中一个 meta_values 组织我的活动(即帖子),但绝对没有成功:

这是代码(尝试通过 meta_key“种类”来组织部落事件,其值为 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

花了两天时间没有结果。我一直在这个网站和谷歌/询问其他开发人员没有可靠的建议:(

4

3 回答 3

0

我认为亚当可能走在正确的轨道上。我不知道插件是如何做到这一点的,但我运行了一个正常的查询并查看了结果中的参数:tribe_events 强制顺序为 event_date 的 ASC,即使我提供了其他参数。

您最好对结果数组进行自己的排序。

于 2013-09-14T02:39:13.707 回答
0

好的,我对这个插件没有经验,但我可以提供我的初步观察,希望它可以提供帮助。

public/template-tags/general.php 在第 167 行定义了tribe_get_events(),看起来它使用了 TribeEventsQuery::getEvents()。该静态函数在第 645 行的 lib/tribe-event-query.class.php 中定义,并且有一个按 $event_date 排序的 $defaults 数组。看起来传递的数组参数被该默认数组覆盖。同样,根本没有使用此插件的经验。我刚刚看到@nathansmith 发布了关于它的推文,并很快下载了它以查看文件。我不知道为什么自定义 WP_Query 不起作用。

如果这没有帮助,我可能会更深入地研究它。

编辑:顺便说一句,路径是相对于插件目录的。

于 2013-09-13T21:33:26.293 回答
0

经过长时间的寻找和学习(我不是 wp 专家),我找到了这个 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', ......

最终会工作

于 2015-02-17T08:34:43.287 回答