Php 按支付网关筛选商业订单(仅活动支付网关)

Php 按支付网关筛选商业订单(仅活动支付网关),php,wordpress,woocommerce,Php,Wordpress,Woocommerce,下面的代码片段通过付款方式完美地过滤了woo商业订单,但我们需要将其修改为在过滤列表中列出其中一个订单中付款网关的结帐处的一个客户以前使用的 /** * Add bulk filter for orders by payment method * * @since 1.0.0 */ public function filter_orders_by_payment_method() { global $typenow;

下面的代码片段通过付款方式完美地过滤了woo商业订单,但我们需要将其修改为在过滤列表中列出其中一个订单中付款网关的结帐处的一个客户以前使用的

    /**
     * Add bulk filter for orders by payment method
     *
     * @since 1.0.0
     */
    public function filter_orders_by_payment_method() {
        global $typenow;

        if ( 'shop_order' === $typenow ) {

            // get all payment methods, even inactive ones
            $gateways = WC()->payment_gateways->payment_gateways();

            ?>
            <select name="_shop_order_payment_method" id="dropdown_shop_order_payment_method">
                <option value="">
                    <?php esc_html_e( 'All Payment Methods', 'wc-filter-orders-by-payment' ); ?>
                </option>

                <?php foreach ( $gateways as $id => $gateway ) : ?>
                <option value="<?php echo esc_attr( $id ); ?>" <?php echo esc_attr( isset( $_GET['_shop_order_payment_method'] ) ? selected( $id, $_GET['_shop_order_payment_method'], false ) : '' ); ?>>
                    <?php echo esc_html( $gateway->get_method_title() ); ?>
                </option>
                <?php endforeach; ?>
            </select>
            <?php
        }
    }


    /**
     * Process bulk filter order payment method
     *
     * @since 1.0.0
     *
     * @param array $vars query vars without filtering
     * @return array $vars query vars with (maybe) filtering
     */
    public function filter_orders_by_payment_method_query( $vars ) {
        global $typenow;

        if ( 'shop_order' === $typenow && isset( $_GET['_shop_order_payment_method'] ) && ! empty( $_GET['_shop_order_payment_method'] ) ) {

            $vars['meta_key']   = '_payment_method';
            $vars['meta_value'] = wc_clean( $_GET['_shop_order_payment_method'] );
        }

        return $vars;
    }


    /** Helper methods ***************************************/


    /**
     * Main WC_Filter_Orders_By_Payment Instance, ensures only one instance is/can be loaded
     *
     * @since 1.0.0
     * @see wc_filter_orders_by_payment()
     * @return WC_Filter_Orders_By_Payment
    */
    public static function instance() {

        if ( is_null( self::$instance ) ) {
            self::$instance = new self();
        }

        return self::$instance;
    }


}


/**
 * Returns the One True Instance of WC_Filter_Orders_By_Payment
 *
 * @since 1.0.0
 * @return WC_Filter_Orders_By_Payment
 */
function wc_filter_orders_by_payment() {
    return WC_Filter_Orders_By_Payment::instance();
}
/**
*按付款方式为订单添加批量筛选
*
*@自1.0.0以来
*/
公共函数按付款方式过滤订单(){
全球$typenow;
如果('shop_order'==$typenow){
//获取所有付款方式,即使是非活动付款方式
$gateways=WC()->支付网关->支付网关();
?>

要在其中一个客户以前使用过的订单中列出以前使用过的支付网关不清楚…请尝试改写您的问题,因为我们不了解您想要什么以及您需要做什么…我的意思是,如果有3个付款网关,但商店中的所有订单都是由客户使用2个付款网关完成的,因此我们需要下拉筛选,以包括在不使用所有3个网关之前使用的唯一2个付款网关。.o仅限签出期间客户使用的2个或其他解决方案:列出woocommerce>设置>人行道中唯一的活动支付网关。因为它在下拉列表中列出了woocommerce默认的禁用网关,所以我们只需要下拉列表活动支付网关请编辑您的问题,谢谢:)完成了顶部文字的编辑,并在结尾详细解释了“在其中一个客户之前已经使用过的订单中列出之前使用的支付网关,”不清楚…请尝试改写您的问题,因为我们不了解您想要什么以及您需要做什么…我的意思是,如果有3个付款网关,但商店中的所有订单都是由客户使用2个付款网关完成的,因此我们需要下拉筛选,以包括在不使用所有3个网关之前使用的唯一2个付款网关。.o仅限签出期间客户使用的2个或其他解决方案:列出woocommerce>设置>人行道中唯一的活动支付网关。因为它在下拉列表中列出了woocommerce默认的禁用网关,所以我们只需要下拉列表活动支付网关请编辑你的问题,谢谢:)完成了顶部的文字编辑,并在最后详细解释了它