如何显示所有帖子并根据wp中特定自定义字段的值进行排序?

时间:2014-05-28 20:31:48

标签: php html wordpress

有没有办法显示所有帖子并根据WP中特定自定义字段的值进行排序?

实施例: 我有一个后牛奶,它有自定义字段

  
      
  • product_brand = Bear Brand
  •   
  • product_description = 200 g
  •   
  • product_price = $ 20.00
  •   
  • product_week = 2014年6月1日至7日
  •   

我想根据产品周价值(2014年6月1 - 7日和2014年6月8 - 14日)显示所有帖子

我在下面尝试过这些代码并且不知道要添加什么来分类这些产品,新手到wp

<?php
query_posts(array(
    'meta_key' => 'product_week',
    'meta_value' => 'June 01 - 07, 2014'
));

if ( have_posts() ) while ( have_posts() ) : the_post();
    echo '<div class="col-md-3">';
    the_post_thumbnail('post-thumbnail', array( 'class' => "img-responsive"));
    echo '<span class="product-title">';
    the_title();
    echo '</span>';
    echo '<span class="product-price">';
    echo '</span>';
    echo '</div>';              
endwhile; 
wp_reset_query(); 
?>

2 个答案:

答案 0 :(得分:1)

datetime的数据只能以日期时间格式存储在mysql数据库中 你没有wordpress问题,这是一个mysql问题

您无法在mysql中存储july , 2012 blah blah等数据

你必须使用指定的格式

如果你已经以格式存储数据,那么你必须用数字转换这些日期并在post_meta的mysql表中搜索<​​/ p>

在php中查看strtotime

答案 1 :(得分:1)

您没有说明您的代码是否正常运行,但顺序错误或根本不起作用。

我不是wordpress专家,但这并不重要,因为你的问题不是关于Wordpress,而是关于数据库和排序。

为此,您需要为产品周提供一个数字值(隐藏)以及它们的显示描述值。否则你怎么整理它们?

按字母顺序排列,12月是6月之前,4月是第一次。

但是如果使用一个数字,你可以(显然)然后轻松地对它们进行排序,使用的最佳格式是YYWW(年份+周数)。价值1401(2014年第1周)出现在1447(2014年第47周)之前,这是在1501之前,即1536之前等。

所以你最终可能会

product_brand = Bear Brand
product_description = 200 g
product_price = $20.00
product_week = June 01 -07, 2014
Product_week_id = 1427 (or whatever week number it is)

然后您可以调整代码以适应