2011-07-04 59 views
0

我有一個客戶端的自定義php頁面。本質上這個頁面將通過post_meta日期(稱爲open_date)列出文章。對於open_date設置的每個項目還包括另外2個(open_start)和(open_close)。如果你沒有弄明白,這是一個事件類型列表。使用post Meta列表發佈內容

最終,我所追求的是一個腳本來獲取所有這個元的職位,並按順序顯示他們。每個metas值的例子如下。真的不知道從哪裏開始的腳本,所以我的代碼段相當缺乏..

如的 open_date = 12/05/2011 open_start =下午12:10 open_close = 02:00 PM

和我的劇本迄今爲止

$masterquery = "SELECT * from wp_postmeta WHERE meta_key = 'open_date'"; 
$masterreslt = mysql_query($masterquery) or die(mysql_error()); 
while($masterdata = mysql_fetch_array($masterreslt)) { 
    $new_array = $masterdata['meta_value']; 
    if(!empty($masterdata['meta_value'])) { 
     foreach($masterdata as $fullarray) { 
      $post_id = $masterdata['post_id']; 
      $open_date = $masterdata['open_date']; 
      $open_start = $masterdata['open_start']; 
      $open_close = $masterdata['open_close']; 

      echo $post_id; 
      echo '<br>'; 

      echo $open_date; 
      echo '<br>'; 
     } 

正如我所說的,相當缺乏,不太確定從哪裏開始。之前從未在WP做過這樣的事情。

回答

0

如果我正確理解你,你想顯示兩個日期(開始和結束)之間的帖子 首先你需要添加一個自定義字段(或元框),你可以在其中輸入兩個日期,一個用於開始,一個用於芬蘭語。

<?php 
$c = 0; $loop = new WP_Query(array('post_type' => <post_type>, 'posts_per_page' => -1, 'post_status' => 'publish', 'orderby' => 'date', 'order' => 'DESC')); 
echo '<ul>'; 
while ($loop->have_posts()) : $loop->the_post(); 
$end = get_post_meta($post->ID, 'end', true); 
$start = get_post_meta($post->ID, 'start', true); 
$c++; 
$y = strtotime($end); 
$x = strtotime($start); 

//echo '<br />'; 
if ($y < $x) { next; } else { 
?> 
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> 
<?php } 
echo '</ul>'; 
endwhile; 

if ($c == 0) { 
echo '<p>None found.</p>'; 
} 

} 
?> 
0

我在使用普通PHP編寫代碼之後有這個工作。我相信有WP功能可以取代這一些。但它的作品,這是我所需要的。關於lastlist的if語句確保它不會列出重複項,因爲在編輯帖子時,這些自定義字段會一次又一次地被添加。然而,此查詢僅獲取每個列表的最新內容。

我的代碼:

<?php 
$lastlist = ""; 
$masterquery = "SELECT * from wp_postmeta WHERE meta_key = 'open_date' ORDER BY meta_value"; 
$masterreslt = mysql_query($masterquery) or die(mysql_error()); 
while($masterdata = mysql_fetch_array($masterreslt)) { 
    $new_array = $masterdata['meta_value']; 
    if(!empty($masterdata['meta_value'])) { 
     foreach($masterdata as $fullarray) { 
      $post_id = $masterdata['post_id']; 

      $property_id = $post_id; 

       if($property_id != $lastlist){ 

       $address = get_post_meta($property_id, 'address', true); 

       $open_date = get_post_meta($property_id, 'open_date', true); 
       $open_date = date( "F j, Y", strtotime($open_date)); 
       $open_start = get_post_meta($property_id, 'open_start', true); 
       $open_close = get_post_meta($property_id, 'open_close', true); 
       $image = get_post_meta($property_id, 'red_image1', true); 
       $excerpt = get_post($property_id, ARRAY_N); 
       $excerpt = $excerpt['5']; 
       $permalink = get_permalink($property_id); 

       echo "<div style=\"width:800px;\">"; 
       echo "<a href=\"$permalink\"><img style=\"width:250px; height:180px; float:left; margin:10px;\" src=\"$image\" /></a>"; 
       echo "<span style=\"float:right;width:530px;\"><a href=\"$permalink\"><h1>$address</h1></a></span>"; 
       echo "<span style=\"float:right;width:530px;\"><h2>$open_date $open_start to $open_close</h2></span>"; 
       echo "<span style=\"float:right;width:530px;\"><p>$excerpt</p></span>"; 
       echo "</div>"; 
       echo "<div style=\"clear:both;\">"; 
       $lastlist = $property_id; 
     } 
     } 
+0

如果是這樣的答案,請標記爲這樣的(有acheckmark左側) – cwallenpoole

+0

請不要使用的mysql_query命令時,WordPress的有建於SQL命令,這是一個浪費的表現。 – moffepoffe