Wordpress Orderby无法正常工作

时间:2013-09-13 21:00:06

标签: wordpress events wordpress-plugin

所以我一直在尝试像疯子一样,用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

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

3 个答案:

答案 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', .....

最终会工作