it-swarm-tr.com

WordPress Gönderilerini Özel Alan Değerleriyle Sıralama

Tamam, bu yüzden WPAlchemy sınıfını yazma alanında özel alan yazma panelleri oluşturmak için kullanıyorum. sayfa ve şimdiye kadar her şey harika gitti ... Ancak, anlayamadığım bir sorun var. Özel sayfa şablonundaki olayları sıralamak için "olay tarihleri" özel alan değerlerini kullanmaya çalışıyorum.

Talimatları takip ettim "Özel Alan Tabanlı ve Değere Göre Sıralama)" kodeksinde bulundu ve özel sorguyu ayarla, ancak çalışıyor gibi görünmüyor?

" Etkinlikler " sayfasının özel sayfa şablonundaki kod:

<?php
/* 
  Template Name: Events
*/
get_header();
?>
<div id="depthead" class="grid_12">
  <h2>Upcoming Events</h2>
</div><!--/depthead-->
<?php

$querystr = "
  SELECT wposts.* 
  FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
  WHERE wposts.ID = wpostmeta.post_id 
  AND wpostmeta.meta_key = '_events_meta[event_date]' 
  AND wposts.post_type = 'post'

  ORDER BY wpostmeta.meta_value DESC
";
$pageposts = $wpdb->get_results($querystr, OBJECT);

?>
<?php if ($pageposts): global $post; $cnt=0; foreach ($pageposts as $post): $cnt++; setup_postdata($post); ?>
<div id="article-<?php echo get_the_ID(); ?>" class="listingbox grid_3">
  <div class="deptpostimg">
    <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><img src="<?php echo $events_metabox->get_the_value('event_thumbnail'); ?>" style="outline:1px solid #000" alt="<?php the_title_attribute(); ?>" /><span class="event-date"><?php $events_metabox->the_value('event_date'); ?></span></a>
  </div><!--/deptpostimg-->
  <h4 class="listing-titles"><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h4>
  <div class="excerpt">
    <?php the_excerpt(); ?>
  </div><!--/excerpt-->
</div><!--/article-<?php echo get_the_ID(); ?>-->
<?php if($cnt % 4 == 0) { ?>
<div class="grid_12 rowseparator">
  <hr />
</div><!--/rowseparator-->
<?php } ?>
<?php endforeach; endif; ?>
</div><!--/wrapper-->
<?php get_footer(); ?>

Özel alan tuşlarını almak gibi değil ... Bu özel yazma panellerini oluşturmak için kullandığım sınıf, hepsini bir dizi olarak saklıyor, bu nedenle de bunlara erişmeye çalıştım nedeni: _events_meta[event_date]

Belki de sorun budur, ama sorun nasıl çözülür bilmiyorum ...

Herhangi bir fikir?


EDIT: İşte bir resim, böylece özel alanların veritabanında nasıl depolandığını görebilirsiniz. Umarım bu neden yeryüzünde _events_meta[event_date] sorgusunda işe yaramayacağını anlamaya yardımcı olur?

WordPress veritabanı için bir Sorgu Ekleyen PHPMyAdmin'in ekran görüntüsü http://staticloader.com/phpmyadmin.png

1
Josh

Josh, şuna bir bak: http://farinspace.com/wpalchemy-metabox-data-storage-modes/ ...

WPAlchemy'in varsayılan olarak nasıl değer depolayacağını değiştireceğimi düşünüyorum ... EXTRACT modunu varsayılan yaparak ...

0
farinspace

Ayrıca etkinlikle ilgili özel alanlar içeren bir blog da buldum. İşte query_posts () işleviyle birlikte kullandığım sorgu:

query_posts($query_string . "&meta_key=event_date_end&meta_compare=>=&meta_value=".date('Y-m-d')."&meta_key=event_date_start&orderby=meta_value&order=ASC");

Event_date adındaki özel bir alana sahip tüm gönderileri seçer (eski olayları filtrelemek için geçerli tarihle karşılaştırır) ve onları event_start_date adlı başka bir özel alana göre sıralar. Umarım bu karmaşık exmaple, query_posts () fonksiyonunu nasıl doğru kullanmanız gerektiğini gösterir.

Yalnızca özel bir alanın varlığını test eden basit bir seçim şöyle görünür:

query_posts('meta_key=event_date'); 

Özel bir alan basit bir SİPARİŞ bu gibi görünüyor:

query_posts('meta_key=event_date&orderby=meta_value&order=ASC');

Query_posts () işlevinin API açıklamasında çok sayıda örnek görebilirsiniz .

2
2ndkauboy