【发布时间】:2017-10-12 08:30:21
【问题描述】:
Woocommerce 交叉销售显示在购物车页面上。默认情况下,它们是随机排序的。谁能帮我按日期(=产品的发布日期)对它们进行排序?非常感谢!
这是 cross-sells.php 的内容:
<?php
/**
* Cross-sells
*
* This template can be overridden by copying it to yourtheme/woocommerce/cart/cross-sells.php.
*
* @see https://docs.woocommerce.com/document/template-structure/
* @author WooThemes
* @package WooCommerce/Templates
* @version 3.0.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( $cross_sells ) : ?>
<div class="cross-sells">
<h2><?php _e( 'You may be interested in…', 'woocommerce' ) ?></h2>
<?php woocommerce_product_loop_start(); ?>
<?php foreach ( $cross_sells as $cross_sell ) : ?>
<?php
$post_object = get_post( $cross_sell->get_id() );
setup_postdata( $GLOBALS['post'] =& $post_object );
wc_get_template_part( 'content', 'product' ); ?>
<?php endforeach; ?>
<?php woocommerce_product_loop_end(); ?>
</div>
<?php endif;
wp_reset_postdata();
解决方案如下:
您不必编辑 cross-sells.php !相反,您可以创建一个小插件来完成这项工作:
- 将以下代码放入一个新的php文件中。
- 将其上传到您的 WP 插件文件夹。
- 在 WP 后端激活插件。
- 在您的购物车页面上测试结果。您的交叉销售将按现在的发布日期排序。
- 如果您想手动更改订单,只需通过 WP 后端在每个产品的产品页面上更改发布日期即可。
感谢 LoicTheAztec 为本解决方案提供过滤器挂钩! (通过为这个过滤钩子创建插件,您不必编辑 function.php 或创建子主题。)
这是这个小插件的代码:
<?php
/**
* Plugin Name: Woocommerce Sort Cross-sales by Date
* Description: This plugin is used to sort cross-sells by date
* Author: ARaction GmbH with help of LoicTheAztec - no guarantee or support!
* Version: 0.1
*/
/* Your code goes below here. */
add_filter( 'woocommerce_cross_sells_orderby', 'custom_cross_sells_orderby', 10, 1 );
function custom_cross_sells_orderby( $orderby ){
$orderby = 'date';
return $orderby;
}
/* Your code goes above here. */
?>
【问题讨论】:
-
就在
if ( $cross_sells ) :之后,你能做一个print_r( $cross_sells )并将输出添加到你的帖子吗?
标签: php wordpress sorting woocommerce cart