当前位置: 首页 > 知识库问答 >
问题:

按sku列表排列的WooCommerce产品短码顺序

段干玺
2023-03-14

是否有一种方法可以修改WooCommerce产品的短码,以便根据产品SKU的列表订购?

搜索引擎向页面发送带有SKU列表的帖子。页面应该按照http post的相同顺序显示产品。

php和mysql select示例(类似这样的代码在我的旧商店系统中工作,在那里我可以使用SQL语法):

$_POST['skus'] = "51,57,34,12,111";
$skus = $_POST['skus'];

select * from products where sku in ('$skus') order by FIELD(sku,'$skus);

如何使用woocommerce的products shortcode执行“OrderBy”,或者是否有更好的方法使用woocommerce执行此操作?

谢谢你的回答。

共有1个答案

刁文光
2023-03-14

在Gavin的帮助下和https://wordpress.stackExchange.com/A/67830/43362中的代码,我找到了这个解决方案:

    function wpse67823_orderby_post_in($orderby, $query){

     //Remove it so it doesn't effect future queries
     remove_filter(current_filter(), __FUNCTION__);

     $post__in = $_POST['skus'];

     $post__in = str_replace(',','\',\'',$post__in);

     return "FIELD(CAST(mt2.meta_value AS CHAR), '$post__in' )";
     } 

    //Add filter and perform query
    add_filter('posts_orderby','wpse67823_orderby_post_in',10,2);

    echo do_shortcode('[products skus="'.$skus.'" orderby="sku"]');

    remove_filter('posts_orderby','wpse67823_orderby_post_in',10,2);
 类似资料:
  • 问题内容: 我有以下查询,该查询基于逗号分隔的列表返回行 我希望此查询的结果以ID在列表中的顺序返回。SQL可以做到吗? 提前致谢 问题答案: 如果您需要输出以特定顺序显示,则需要使用服务器可以排序的内容来指定该顺序。不知道您要使用哪个引擎,一般的方案是创建一个临时表或使用行集构造函数将每个记录ID与所需的排序顺序配对。 例如(SQL Server)

  • WooCommerce前台搜索只会从标题、内容、摘要里搜索,产品SKU有时比较重要,但它存储在custom field里,默认无法通过SKU搜索产品。本文介绍的方法可以让产品搜索支持SKU。 默认搜索 假设我要搜“SLK3423”这个SKU,默认搜索的SQL语句如下所示,可以看出只搜了标题、摘要和内容。 SELECT SQL_CALC_FOUND_ROWS wp_posts.id FROM w

  • 在WooCommerce中,我使用这个胎面的代码,用一个简短的代码显示定义的产品ID中的产品价格。但它并不真的像我想要的那样。代码如下: 我对php编码知识很差。但我看到另一个线程显示产品价格: 我已经尝试将这些代码混合到大代码中,并替换了……它起作用了,但我想要的是显示价格的东西是这样的: 我需要在价格后面显示货币符号,像:(中间有空格),而不是像。 我怎样才能使它以一种干净的正常方式工作?

  • 我在我的活动主题文件: 我正在尝试按Desc对产品进行排序,但产品仍然默认排序(ASC)。 如何按描述对它们进行排序?

  • 我第一次使用woocommerce(wordpress)。 我试图在树形中显示所有产品类别及其各自的子类别,但我似乎不能像在后端使用拖放方式订购它们那样订购它们。 WP get_terms()只允许按id、名称、计数、slug和none排序。 我使用的代码是:

  • 我在WooCommerce的后端有一个自定义元框。目前,我已将其设置为显示单个产品页面中的一些数据。 我用过