WP查询自定义排序依据,而不是自定义字段

时间:2015-11-25 作者:Robbert

我正在制作一个产品归档页面,在该页面上,我会在每个页面上显示20个带有分页的产品。

每个产品的价格都是通过一个公式来计算的,这个公式通过数据库中保存的数据来获取其参数。它是这样工作的(并且不会与每个产品一起保存在自定义字段中),因为这样我们就可以更改数据库中的一些数据,所有产品的价格都会更改。

问题是我现在无法按元键和值排序。因此,我尝试将价格添加到查询的posts数组中,然后按价格订购。但如果使用分页,则只能按价格订购前20项。因此,下一页将显示价格低于第一页的产品。

First page 20 item:

<产品10,00等

Second page 20 items:

    产品11,00产品14,00产品15,00产品19,00
    • 因此我认为需要在早期阶段修改查询,例如使用“orderby”参数。但我只能找到orderby自定义字段,这不是我要搜索的。

      有人知道有一个钩子可以将自定义orderby函数添加到wp查询中吗?

      My code:

      // Get pages page for pagination
      $paged = ( get_query_var(\'paged\') ) ? get_query_var(\'paged\') : 1;
      
      // Query arguments
      $args = array(
          \'post_type\' => \'products\',
          \'posts_per_page\' => 20,
          \'paged\' => $paged
      );
      
      // Create object
      $products = new WP_Query( $args );
      
      
      // Add price to each product
      foreach( $products->posts as $product ) {
      
          $price = price_calulate_function( $product->ID );
          $product->price = $price;
      
      }
      
      // Sort by price
      uasort( $products->posts, function( $a, $b ) {
      
          $a = $a->price;
          $b = $b->price;
      
          if( $a == $b ) {
              return 0;   
          }
      
          return ( $a < $b ) ? -1 : 1;
      
      });
      
      // Loop
      if( $products->have_posts() ) {
      
          while( $products->have_posts() ) {
      
              $products->the_post();
      
              // Show product
      
          }
      
      }
      

1 个回复
最合适的回答,由SO网友:Robbert 整理而成

我用一个按钮修复了我的问题,可以一次性更新所有价格。

相关推荐

JqueryUi对话框给出未捕获的TypeError:This._addClass不是函数错误

我有一个网站,我们需要一些自定义php编码来连接到外部数据库,以获取几个销售我们产品的供应商的产品评论URL。我们试图实现的基本想法是让用户注册他们的产品,然后如果他们愿意留下评论,就延长保修期。我正在使用XYZScript。com的“插入PHP”插件来实现这一点。该主题最初只加载了jQuery,以避免创建子主题,我们正在php脚本中加载jQueryUI。因此,我们将jQuery加载到文档的标题中,将jQueryUI加载到文档的正文中。我不太确定这是因为加载脚本的顺序造成的,还是其他一些冲突的javasc