Сортировка по произвольным полям в wordpress

Montoya
На сайте с 30.09.2006
Offline
139
8637

Суть проблемы в следующем: на главой странице есть блок, в котором выводятся записи из рубрики "расписание выставок", но выводятся они как обычно по дате публикации, а нужно сделать, что бы они выводились по произвольному полю "дата", т.е. что бы бралась записи из этой рубрики где в произвольном поле совпадает дата с сегодняшней или старше, если сегодняшней нет.

Код который сейчас выводит записи на главную

		<div id="exhibitions">

<div class="caption">Расписание выставок <a href="<?php echo get_category_link($config['exhibitions']) ?>">все</a></div>
<?php $exhibitions = new WP_Query('showposts=5&cat='.$config['exhibitions']) ?>
<?php if ($exhibitions->have_posts()) : ?>
<ul>
<?php while ($exhibitions->have_posts()) : $exhibitions->the_post(); ?>
<?php $custom = get_post_custom($post->ID); ?>
<li>
<?php if($custom["flag"][0]) { ?><img src="<?php bloginfo('template_url'); ?>/i/flags/<?php echo $custom["flag"][0]; ?>" width="16" height="16" alt="<?php the_title(); ?>" /> <?php } ?><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a>
<?php if($custom["date"][0]) { ?><div><strong><?php echo $custom["date"][0]; ?><?php if($custom["date_2"][0]) { ?> - <?php echo $custom["date_2"][0]; ?><?php } ?></strong>, <?php echo $custom["country"][0]; ?><?php if($custom["city2"][0]) { ?>, <?php echo $custom["city2"][0]; ?><?php } ?></div><?php } ?>
</li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
</div><!-- #exhibitions -->

Поле "date" это дата начала выставки, а date_2 завершения. Сортировка должна быть именно по первому. Подскажите, пожалуйста, что нужно исправить в коде, что бы записи выводились именно так, как мне нужно

[Удален]
#1

Здесь это решение обсуждается

Montoya
На сайте с 30.09.2006
Offline
139
#2

nomads, у меня с английским итак туго, а тут еще такие тексты :)

В любом случаи спасибо, попробую разобраться

Nunan
На сайте с 15.08.2008
Offline
78
#3

написал, но не уверен что без ошибок

		<div id="exhibitions">
<div class="caption">Расписание выставок <a href="<?php echo get_category_link($config['exhibitions']) ?>">все</a></div>

<?php
$querystr = "
SELECT wposts.*
FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
WHERE wposts.ID = wpostmeta.post_id
AND wpostmeta.meta_value>UNIX_TIMESTAMP()
AND wpostmeta.meta_key = 'date'
AND wposts.post_type = 'post'
AND wposts.post_status = 'publish'
ORDER BY wpostmeta.meta_value ASC
";
$pageposts = $wpdb->get_results($querystr, OBJECT);

if ($pageposts)
{
?>
<ul>
<?php
foreach ($pageposts as $post)
{
setup_postdata($post);



<?php $custom = get_post_custom($post->ID); ?>
<li>
<?php if($custom["flag"][0]) { ?><img src="<?php bloginfo('template_url'); ?>/i/flags/<?php echo $custom["flag"][0]; ?>" width="16" height="16" alt="<?php the_title(); ?>" /> <?php } ?><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a>
<?php if($custom["date"][0]) { ?><div><strong><?php echo $custom["date"][0]; ?><?php if($custom["date_2"][0]) { ?> - <?php echo $custom["date_2"][0]; ?><?php } ?></strong>, <?php echo $custom["country"][0]; ?><?php if($custom["city2"][0]) { ?>, <?php echo $custom["city2"][0]; ?><?php } ?></div><?php } ?>
</li>



}?>
</ul>
<?php } ?>

</div><!-- #exhibitions -->
Montoya
На сайте с 30.09.2006
Offline
139
#4

Да, судя по всему без ошибок не обошлось. Поменял тот кусок кода на ваш, получил ошибку

Parse error: syntax error, unexpected '<' in /xxx/footer.php on line 69

line 69 это получается

<?php $custom = get_post_custom($post->ID); ?>
Nunan
На сайте с 15.08.2008
Offline
78
#5

<?php $custom = get_post_custom($post->ID); ?>

замени на

$custom = get_post_custom($post->ID); ?>

и }?> (после </li>)

на <?php } ?>

:)

Montoya
На сайте с 30.09.2006
Offline
139
#6

Сделал. Теперь просто пусто. Т.е. страница загружается нормально и полностью, но на месте того блока просто пустое место.

DkWix
На сайте с 04.11.2007
Offline
75
#7

new WP_Query('showposts=5&cat='.$config['exhibitions'])

+

http://codex.wordpress.org/Template_Tags/query_posts#Orderby_Parameters

orderby=meta_value Note: A meta_key=keyname must also be present in the query.
order=DESC
Nunan
На сайте с 15.08.2008
Offline
78
#8
Montoya:
Сделал. Теперь просто пусто. Т.е. страница загружается нормально и полностью, но на месте того блока просто пустое место.

У вас поле date в каком формате, таком - 128905983 или в формате даты 2010-32-32 14:34:23 ?

Montoya
На сайте с 30.09.2006
Offline
139
#9

Nunan, поле - meta_value, тип - longtext, значение(пример) - 25.09.2010

Nunan
На сайте с 15.08.2008
Offline
78
#10

Поле точно называется "date"?

Пробуй такой код (подправил):

<div id="exhibitions">
<div class="caption">Расписание выставок <a href="<?php echo get_category_link($config['exhibitions']) ?>">все</a></div>

<?php
$querystr = "
SELECT wposts.*
FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
WHERE wposts.ID = wpostmeta.post_id
AND UNIX_TIMESTAMP(wpostmeta.meta_value)>UNIX_TIMESTAMP(CURDATE())
AND wpostmeta.meta_key = 'date'
AND wposts.post_type = 'post'
AND wposts.post_status = 'publish'
ORDER BY wpostmeta.meta_value ASC
";
$pageposts = $wpdb->get_results($querystr, OBJECT);

if ($pageposts)
{
?>
<ul>
<?php
foreach ($pageposts as $post)
{
setup_postdata($post);



$custom = get_post_custom($post->ID); ?>
<li>
<?php if($custom["flag"][0]) { ?><img src="<?php bloginfo('template_url'); ?>/i/flags/<?php echo $custom["flag"][0]; ?>" width="16" height="16" alt="<?php the_title(); ?>" /> <?php } ?><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a>
<?php if($custom["date"][0]) { ?><div><strong><?php echo $custom["date"][0]; ?><?php if($custom["date_2"][0]) { ?> - <?php echo $custom["date_2"][0]; ?><?php } ?></strong>, <?php echo $custom["country"][0]; ?><?php if($custom["city2"][0]) { ?>, <?php echo $custom["city2"][0]; ?><?php } ?></div><?php } ?>
</li>



<?php }?>
</ul>
<?php } ?>

</div><!-- #exhibitions -->

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий