创建数组以比较自定义字段值

时间:2014-01-22 作者:mantis

我想我需要一些指导。我在存档模板页面上有一个自定义帖子列表,其中显示了每个自定义帖子的信息。它们使用WPQuery循环:

<?php $restypes = new WP_Query( array( \'post_type\' => \'reservation_type\', \'posts_per_page\' => -1 ) );?>
每个帖子都有几个自定义字段:$price, 可选$promo_price 还有一个变量$per 它根据自定义分类法确定价格是每人还是每个房间。然后确定最佳价格,如下所示:

  if(in_array( \'dorm\', $per )){
      $person_room =\'per-person\';
  } else {
      $person_room =\'per-room\';
  }  

  $post_id= $post->ID;
  $promo_price = get_field(\'promo_price\');
  $norm_price = get_field(\'price\');
  $p_per_room = get_field(\'people_per_room\');

  if ($promo_price && !empty($promo_price)){

        if($person_room == \'per-room\'){
            $addprice= $promo_price /$p_per_room;
        } else {
            $addprice= $promo_price;
        }

        $prices[$post_id]= $addprice;

  } elseif ($norm_price && !empty($norm_price)){

        if($person_room == \'per-room\'){
            $addprice= $norm_price /$p_per_room;
        } else {
            $addprice= $norm_price;
        }

        $prices[$post_id]= $addprice;
  }

  $best = array_keys($prices, min($prices));
我的问题是数组$best 直到所有帖子都循环通过后才完成。所有这些的要点是能够添加:

<?php
if(in_array($post->ID, $best)){?> 
<div class="best-price"> 
<div class="ribbon-wrapper"><div class="ribbon">Best Price</div></div>
<?php  } else { ?>
    <div>
<?php } ?>
因此,以最佳的人均价格为商品提供不同的风格。

我的问题是,我是否需要创建一个单独的循环来填充$best 数组以执行此操作?还是有更好的方法?

我最初考虑使用orderby => \'meta_value_num\' 计算出最佳价格作为一个函数,并添加一个元值。

PS Theget_field() 函数来自高级自定义字段。

1 个回复
SO网友:Rajeev Vyas

我只看到两种方法,一种是必须使用seprate循环才能获得最佳值,另一种是可以通过使用css和div设置的绝对位置来添加ribbon包装器。虽然最好是使用meta\\u value\\u num计算最佳值。

结束

相关推荐

Pagination on Custom Loop

我想将最新帖子的样式与自定义页面上某个类别中的所有其他帖子的样式不同。到目前为止,我有下面的代码,它正是这样做的:<?php if (have_posts()) : ?> <?php query_posts(\"cat=4&showposts=1\"); ?> <?php while (have_posts()) : the_post(); ?> (Style1)<?php the_title(); ?><

创建数组以比较自定义字段值 - 小码农CODE - 行之有效找到问题解决它

创建数组以比较自定义字段值

时间:2014-01-22 作者:mantis

我想我需要一些指导。我在存档模板页面上有一个自定义帖子列表,其中显示了每个自定义帖子的信息。它们使用WPQuery循环:

<?php $restypes = new WP_Query( array( \'post_type\' => \'reservation_type\', \'posts_per_page\' => -1 ) );?>
每个帖子都有几个自定义字段:$price, 可选$promo_price 还有一个变量$per 它根据自定义分类法确定价格是每人还是每个房间。然后确定最佳价格,如下所示:

  if(in_array( \'dorm\', $per )){
      $person_room =\'per-person\';
  } else {
      $person_room =\'per-room\';
  }  

  $post_id= $post->ID;
  $promo_price = get_field(\'promo_price\');
  $norm_price = get_field(\'price\');
  $p_per_room = get_field(\'people_per_room\');

  if ($promo_price && !empty($promo_price)){

        if($person_room == \'per-room\'){
            $addprice= $promo_price /$p_per_room;
        } else {
            $addprice= $promo_price;
        }

        $prices[$post_id]= $addprice;

  } elseif ($norm_price && !empty($norm_price)){

        if($person_room == \'per-room\'){
            $addprice= $norm_price /$p_per_room;
        } else {
            $addprice= $norm_price;
        }

        $prices[$post_id]= $addprice;
  }

  $best = array_keys($prices, min($prices));
我的问题是数组$best 直到所有帖子都循环通过后才完成。所有这些的要点是能够添加:

<?php
if(in_array($post->ID, $best)){?> 
<div class="best-price"> 
<div class="ribbon-wrapper"><div class="ribbon">Best Price</div></div>
<?php  } else { ?>
    <div>
<?php } ?>
因此,以最佳的人均价格为商品提供不同的风格。

我的问题是,我是否需要创建一个单独的循环来填充$best 数组以执行此操作?还是有更好的方法?

我最初考虑使用orderby => \'meta_value_num\' 计算出最佳价格作为一个函数,并添加一个元值。

PS Theget_field() 函数来自高级自定义字段。

1 个回复
SO网友:Rajeev Vyas

我只看到两种方法,一种是必须使用seprate循环才能获得最佳值,另一种是可以通过使用css和div设置的绝对位置来添加ribbon包装器。虽然最好是使用meta\\u value\\u num计算最佳值。

相关推荐

Increase offset while looping

我正在编写一个自定义帖子插件,它将自定义帖子分组显示为选项卡。每组4个岗位。是否可以编写一个偏移量随每次循环而增加的查询?因此,结果将是:-第一个查询显示从1到4的帖子-第二个查询显示从5到8的帖子-第三个查询显示从9到12的帖子等。 <div class=\"official-matters-tabs\"> <?php $args = array(\'post_type\' => \'official-matters\', \'showp