WooCommerce Orders pagination

时间:2017-05-22 作者:Volt

我一直在尝试在“我的帐户”>“订单”页面中使用woo\\u分页添加分页。

我也在这篇文章中尝试了这个解决方案pagination in woocommerce order history page但它不起作用。

我正在使用WC 2.6

这是订单中的代码。php,因为我的订单。WC 2.6中不推荐使用php

<table class="woocommerce-MyAccount-orders shop_table shop_table_responsive my_account_orders account-orders-table">
    <thead>
        <tr>
            <?php foreach ( wc_get_account_orders_columns() as $column_id => $column_name ) : ?>
                <th class="<?php echo esc_attr( $column_id ); ?>"><span class="nobr"><?php echo esc_html( $column_name ); ?></span></th>
            <?php endforeach; ?>
        </tr>
    </thead>

    <tbody>
        <?php foreach ( $customer_orders->orders as $customer_order ) :
            $order      = wc_get_order( $customer_order );
            $item_count = $order->get_item_count();
            ?>
            <tr class="order">
                <?php foreach ( wc_get_account_orders_columns() as $column_id => $column_name ) : ?>
                    <td class="<?php echo esc_attr( $column_id ); ?>" data-title="<?php echo esc_attr( $column_name ); ?>">
                        <?php if ( has_action( \'woocommerce_my_account_my_orders_column_\' . $column_id ) ) : ?>
                            <?php do_action( \'woocommerce_my_account_my_orders_column_\' . $column_id, $order ); ?>

                        <?php elseif ( \'order-number\' === $column_id ) : ?>
                            <a href="<?php echo esc_url( $order->get_view_order_url() ); ?>">
                                <?php echo _x( \'#\', \'hash before order number\', \'woocommerce\' ) . $order->get_order_number(); ?>
                            </a>

                        <?php elseif ( \'order-date\' === $column_id ) : ?>
                            <time datetime="<?php echo date( \'Y-m-d\', strtotime( $order->order_date ) ); ?>" title="<?php echo esc_attr( strtotime( $order->order_date ) ); ?>"><?php echo date_i18n( get_option( \'date_format\' ), strtotime( $order->order_date ) ); ?></time>

                        <?php elseif ( \'order-status\' === $column_id ) : ?>
                            <?php echo wc_get_order_status_name( $order->get_status() ); ?>

                        <?php elseif ( \'order-total\' === $column_id ) : ?>
                            <?php echo sprintf( _n( \'%s for %s item\', \'%s for %s items\', $item_count, \'woocommerce\' ), $order->get_formatted_order_total(), $item_count ); ?>

                        <?php elseif ( \'order-actions\' === $column_id ) : ?>
                            <?php
                                $actions = array(
                                    \'pay\'    => array(
                                        \'url\'  => $order->get_checkout_payment_url(),
                                        \'name\' => __( \'Pay\', \'woocommerce\' )
                                    ),
                                    \'view\'   => array(
                                        \'url\'  => $order->get_view_order_url(),
                                        \'name\' => __( \'View\', \'woocommerce\' )
                                    ),
                                    \'cancel\' => array(
                                        \'url\'  => $order->get_cancel_order_url( wc_get_page_permalink( \'myaccount\' ) ),
                                        \'name\' => __( \'Cancel\', \'woocommerce\' )
                                    )
                                );

                                if ( ! $order->needs_payment() ) {
                                    unset( $actions[\'pay\'] );
                                }

                                if ( ! in_array( $order->get_status(), apply_filters( \'woocommerce_valid_order_statuses_for_cancel\', array( \'pending\', \'failed\' ), $order ) ) ) {
                                    unset( $actions[\'cancel\'] );
                                }

                                if ( $actions = apply_filters( \'woocommerce_my_account_my_orders_actions\', $actions, $order ) ) {
                                    foreach ( $actions as $key => $action ) {
                                        echo \'<a href="\' . esc_url( $action[\'url\'] ) . \'" class="button \' . sanitize_html_class( $key ) . \'">\' . esc_html( $action[\'name\'] ) . \'</a>\';
                                    }
                                }
                            ?>
                        <?php endif; ?>
                    </td>
                <?php endforeach; ?>
            </tr>
        <?php endforeach; ?>
    </tbody>
</table>

<?php do_action( \'woocommerce_before_account_orders_pagination\' ); ?>

<?php if ( 1 < $customer_orders->max_num_pages ) : ?>
    <div class="woocommerce-Pagination">
        <?php if ( 1 !== $current_page ) : ?>
            <a class="woocommerce-Button woocommerce-Button--previous button" href="<?php echo esc_url( wc_get_endpoint_url( \'orders\', $current_page - 1 ) ); ?>"><?php _e( \'Previous\', \'woocommerce\' ); ?></a>
        <?php endif; ?>

        <?php if ( $current_page !== intval( $customer_orders->max_num_pages ) ) : ?>
            <a class="woocommerce-Button woocommerce-Button--next button" href="<?php echo esc_url( wc_get_endpoint_url( \'orders\', $current_page + 1 ) ); ?>"><?php _e( \'Next\', \'woocommerce\' ); ?></a>
        <?php endif; ?>
    </div>
<?php endif; ?>
“>

1 个回复
SO网友:CodeMascot

好啊据我调查WooCommerce 为中的订单提供默认分页My AccountSee this GitHub issue here. 还可以看到,在my-orders.php 在您的代码中调用woocommerce_before_account_orders_pagination 通过这样做

<?php do_action( \'woocommerce_before_account_orders_pagination\' ); ?>
所以WooCommerce 提供默认分页。你最好使用它。订单号大于15后可能会分页。

无论如何,如果这个东西不起作用,那么你可以看到this post. 这家伙说他是用分页来完成的。虽然我不确定这东西是否有效,因为我还没有试过,但你自己还是值得一试。

希望以上答案能有所帮助。

结束

相关推荐

联系人表单函数应该在函数.php中还是在插件文件中?

我现在的函数中有一个函数。在前端显示联系人表单的php文件,还检查用户数据并发送电子邮件,所以问题是,我应该把它放在原处(functions.php)吗??或者将其包含在插件中。我必须说,到目前为止,所提到的表单是附加到主题功能的,例如,它使用用户在自定义屏幕上选择的颜色,但我想知道在这种情况下是否属于“插件领域”,非常感谢!