是否有一种方法可以修改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执行此操作?
谢谢你的回答。
在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的后端有一个自定义元框。目前,我已将其设置为显示单个产品页面中的一些数据。 我用过