2013-09-13 6 views
0

Так я пытался как сумасшедший, чтобы организовать мои события (которые сообщений) одним из meta_values ​​абсолютно без успеха:Wordpress OrderBy не работает

Вот код (Попытка организовать Tribe События по 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 - второй и третий. Так как это приоритет этих событий. Таким образом, результат должен показать, AAB, но вместо этого на изображении вы можете увидеть, это просто показывает ABA (нумерованное тем, когда сообщение было опубликовано)

http://cl.ly/image/0W2b2I270d3v

провел два дня на это без каких-либо результатов. Я был на этом сайте и на всем протяжении google/просил других разработчиков без твердых советов :(

ответ

0

Хорошо, у меня нет опыта работы с этим плагином, но я могу предложить свое первоначальное наблюдение и, надеюсь, это может помочь.

public/template-tags/general.php определяет tribe_get_events() в строке 167, которая выглядит так, будто использует TribeEventsQuery :: getEvents(). Эта статическая функция определена в lib/tribe-event-query.class.php on line 645 и имеет массив $ defaults, который заказывает $ event_date. Похоже, что аргументы переданного массива переопределены этим массивом по умолчанию. Опять же, никакого опыта с этим плагином вообще нет. Я только что заметил @nathansmith твит и об этом скачал чтобы взглянуть на файлы. Я понятия не имею, почему пользовательский WP_Query не работал.

Возможно, я могу глубже взглянуть на него, если это не поможет.

EDIT: btw путь относится к каталогу плагина.

0

Я думаю, что Адам может быть на правильном пути. Я не знаю, как это делает плагин, но я выполнил обычный запрос и посмотрел на аргументы, которые пришли из результатов: tribe_events заставляет порядок быть ASC event_date, даже если я предоставил аргументы в противном случае.

Возможно, вам лучше провести собственную сортировку по результирующему массиву.

0

После долгого поиска и обучения (и я не эксперт wp), я нашел окончательное решение для этого плагина Modern Tribe. Проблема в том, что плагин хочет, чтобы вы использовали свою функцию для получения сообщений, но что, если вы хотите иметь сообщение внутри основного запроса - это позволяет использовать has_posts(). И когда вы пытаетесь установить свой заказ для этого запроса - он не меняется.

Итак, это лучшее решение, которое вы найдете по всей сети - Вы должны обновить функцию основного класса в Lib/племени-событийного query.class.php, как описано здесь: http://blog.timoor.info/2015/02/wordpress-posttype-tribeevents-orderby.html

Тогда ваш query_posts(array('post_type'=> 'tribe_events','orderby' => 'EventRating', .....

ПОЛНОСТЬЮ РАБОТАЕТ

Смежные вопросы