WooCommerce-客户订单历史记录分页

时间:2016-02-18 作者:nickyb

I\'m trying to implement pagination into WC\'s customer order history that can be seen on the "My Account" page using woo_pagination().

https://docs.woothemes.com/document/woo_pagination/

我试图编辑的模板文件是-woocommerce/templates/myaccount/MyOrders。php

默认情况下,将显示最近的15个订单。我已将[woocommerce\\u my\\u account]页面标记更改为[woocommerce\\u my\\u account order\\u count=“all”]以显示所有订单,而不是仅显示最后15个订单。

我现在要做的是添加woo\\u分页功能,以便每页显示X个订单,这样客户就可以有组织地获得整个订单历史记录。但我不知道如何添加它,而且我觉得文档在这种情况下没有多大帮助。

Here\'s a copy of the template I\'m trying to add the pagination function to:

$my_orders_columns = apply_filters( \'woocommerce_my_account_my_orders_columns\', array(
    \'order-number\'  => __( \'ID\', \'woocommerce\' ),
    \'order-date\'    => __( \'Date\', \'woocommerce\' ),
    \'order-total\'   => __( \'Packages\', \'woocommerce\' ),
    \'order-total\'   => __( \'Price\', \'woocommerce\' ),
    \'order-status\'  => __( \'Status\', \'woocommerce\' ),
    \'order-actions\' => \' \',
) );

$customer_orders = get_posts( apply_filters( \'woocommerce_my_account_my_orders_query\', array(
    \'numberposts\' => $order_count,
    \'meta_key\'    => \'_customer_user\',
    \'meta_value\'  => get_current_user_id(),
    \'post_type\'   => wc_get_order_types( \'view-orders\' ),
    \'post_status\' => array_keys( wc_get_order_statuses() )
) ) );

if ( $customer_orders ) : ?>
    <h2><?php echo apply_filters( \'woocommerce_my_account_my_orders_title\', __( \'Recent Orders\', \'woocommerce\' ) ); ?></h2>

    <table class="shop_table shop_table_responsive my_account_orders">
    <?php echo $customer_orders[\'numberposts\']. \'<br>test\'; ?>

        <thead>
            <tr>
                <?php foreach ( $my_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 as $customer_order ) :
                $order      = wc_get_order( $customer_order );
                $item_count = $order->get_item_count();
                ?>
                <tr class="order">
                    <?php foreach ( $my_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 endif; ?>
我尝试在以下内容之后添加分页功能:

</tr>
<?php endforeach; ?>
但它没有起作用。如有任何帮助或建议,将不胜感激。

1 个回复
SO网友:Khushbu Padalia

我在订单历史页面中添加了分页功能,它正在工作。更换回路上方的以下代码

$my_orders_columns = apply_filters( \'woocommerce_my_account_my_orders_columns\', array( \'order-number\' => __( \'ID\', \'woocommerce\' ), \'order-date\' => __( \'Date\', \'woocommerce\' ), \'order-total\' => __( \'Packages\', \'woocommerce\' ), \'order-total\' => __( \'Price\', \'woocommerce\' ), \'order-status\' => __( \'Status\', \'woocommerce\' ), \'order-actions\' => \'&nbsp;\', ) ) $customer_orders1 = get_posts(apply_filters(\'woocommerce_my_account_my_orders_query\', array( \'numberposts\' => -1, \'meta_key\' => \'_customer_user\', \'meta_value\' => get_current_user_id(), \'post_type\' => wc_get_order_types(\'view-orders\'), \'post_status\' => array_keys(wc_get_order_statuses()) ))); $total_records = count($customer_orders1); $posts_per_page = 20; $total_pages = ceil($total_records / $posts_per_page); $paged = ( get_query_var(\'page\') ) ? get_query_var(\'page\') : 1; $customer_orders = get_posts(array( \'meta_key\' => \'_customer_user\', \'meta_value\' => get_current_user_id(), \'post_type\' => wc_get_order_types(\'view-orders\'), \'posts_per_page\' => $posts_per_page, \'paged\' => $paged, \'post_status\' => array_keys(wc_get_order_statuses()) ));

循环完成后添加分页

<div class="pagination"> <?php $args = array( \'base\' => \'%_%\', \'format\' => \'?page=%#%\', \'total\' => $total_pages, \'current\' => $paged, \'show_all\' => False, \'end_size\' => 5, \'mid_size\' => 5, \'prev_next\' => True, \'prev_text\' => __(\'&laquo; Previous\'), \'next_text\' => __(\'Next &raquo;\'), \'type\' => \'plain\', \'add_args\' => False, \'add_fragment\' => \'\' ); echo paginate_links($args); ?> </div>

相关推荐

显示作者姓名PHP(自制插件)

我有一个需要帮助的问题,因为我自己找不到解决办法。我接管了一个网站,之前有人在那里创建了一个自制插件。。使用默认插件“Contact Form 7”,用户可以在页面上创建帖子。()https://gyazo.com/c8b20adecacd90fb9bfe72ad2138a980 )关于自行创建的插件“Contact Form 7 extender”,帖子是通过PHP代码在后台生成的(https://gyazo.com/115a6c7c9afafd2970b66fd421ca76a3)其工作原理如下:如果