在WooCommerce中,我正在尝试在单个产品页面上输出相关产品列表。我可以按如下方式检索一系列相关产品:
julia> a = BandedMatrices.SymBandedMatrix(Float64,5,1)
5×5 BandedMatrices.SymBandedMatrix{Float64}:
6.36578e-310 6.36578e-310
6.36578e-310 6.36578e-310 6.36577e-310
6.36577e-310 6.36577e-310 6.36577e-310
6.36577e-310 6.36577e-310 6.36578e-310
6.36578e-310 6.36577e-310
julia> Base.setindex!(M::SymBandedMatrix,val,r,c) =
( (a,b) = minmax(r,c) ; M.data[M.k+a-b+1,b-a+1]=val )
julia> a[1,1]=1
1
julia> a
5×5 BandedMatrices.SymBandedMatrix{Float64}:
1.0 6.36578e-310
6.36578e-310 6.36578e-310 6.36577e-310
6.36577e-310 6.36577e-310 6.36577e-310
6.36577e-310 6.36577e-310 6.36578e-310
6.36578e-310 6.36577e-310
但是,这会按如下方式输出数组,这似乎是一个随机顺序。
<?
// Current product ID
$currentProductId = $product->get_id();
// Related products
$relatedProducts = wc_get_related_products($currentProductId);
print_r($relatedIssues);
?>
我想按照数值从高到低排列这个数组?如果可能的话?
感谢。
答案 0 :(得分:3)
有很多方法可以实现这一目标:
rsort()
rsort($relatedProducts, SORT_NUMERIC);
注意:此函数为数组中的元素指定新键。它将删除可能已分配的任何现有密钥,而不仅仅是重新排序密钥。这在这种情况下是无关紧要的,但是当数组键对于进一步处理很重要时会破坏。
usort()
usort($relatedProducts, sort_desc);
function sort_desc( $a, $b) {
if ( $a === $b ) {
return 0;
}
return ( $a > $b ) ? -1 : 1;
}
wc_products_array_orderby( $relatedProducts, $orderby = 'id', $order = 'desc' )
您不仅可以按产品ID排序,还可以按title, date, modified (date), menu_order, price
排序。
这最终会调用以下函数进行基于ID的排序,但对{&#39; desc&#39;最终输出的顺序:
array_reverse()
相关产品已经上映
/**
* Sort by id.
* @since 3.0.0
* @param WC_Product object $a
* @param WC_Product object $b
* @return int
*/
function wc_products_array_orderby_id( $a, $b ) {
if ( $a->get_id() === $b->get_id() ) {
return 0;
}
return ( $a->get_id() < $b->get_id() ) ? -1 : 1;
}
行动
woocommerce_after_single_product_summary
模板
content-single-product.php
功能。
在单个产品页面上修改相关产品的订单
可以使用woocommerce_output_related_products
进行过滤。要么
如果您需要在模板外部(例如侧边栏),则可以使用woocommerce_output_related_products_args
短代码。
要更改布局,我强烈建议您使用和自定义
来自[related_products orderby="ID"]
的WooCommerce模板related.php
文件夹而不是向template\single-product
添加其他代码。
脱离标准的WooCommerce / WordPress约定可能会产生代码残留,将来很难维护,调试或升级。除了其他插件,主题或您自己的自定义代码,可能想要&#39; hook&#39;进入上述功能或它的HTML输出,无法做到。
答案 1 :(得分:2)
试试这个:
usort($relatedIssues, function($a, $b) { return ($a > $b) ? -1 : 1; });