在自定义按钮上运行功能,在woocommerce管理订单页面中单击

时间:2019-05-30 14:51:12

标签: php wordpress woocommerce backend hook-wordpress

基于Add a button on top of admin orders list in woocommerce应答代码,我能够在woocommerce管理订单列表上添加自定义按钮。

这是代码(轻度定制)

add_action( 'manage_posts_extra_tablenav', 'admin_order_list_top_bar_button', 20, 1 );
function admin_order_list_top_bar_button( $which ) {
    global $typenow;

    if ( 'shop_order' === $typenow && 'top' === $which ) {
        ?>
        <div class="alignleft actions custom">
            <button type="submit" name="custom_" style="height:32px;" class="button" value=""><?php
                echo __( 'Import Couriers', 'woocommerce' ); ?></button>
        </div>
        <?php
    }
}

现在,当单击此自定义按钮时,我需要运行以下功能:

function update_shipping_couriers_meta_field() {
    $dir = __DIR__;
    $couriers = file( $dir . '/import-couriers.csv', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES );
    $count = count(couriers);
    $i = 1;

    do {
        if ( !empty( $couriers ) ) {
            foreach ( $couriers as $a ) {
                if ( !empty( $a ) ) {
                    $rows = explode(';', $a);

                    $id = $rows[0];
                    $id = int($id);
                    $couriers = $rows[1];

                    update_post_meta( $id, '_shipping_couriers', $couriers );
                }
                $i++;
            }
        }
    } 
    while ( $i <= $count );
}

实际上,该函数根据特定的订单ID更新“ _shipping_couriers”自定义字段。这两个值都存在于一个csv文件中。

我已经对其进行了测试,并且可以正常工作。当我单击使用上面的函数创建的按钮时,我就“运行”它。

单击按钮后如何运行我的功能?

1 个答案:

答案 0 :(得分:1)

您的代码中有一些遗漏的东西,而上一个函数中有一个错误,需要改为count(couriers);。{p1

count($couriers);

代码进入活动子主题(或活动主题)的functions.php文件中。经过测试,可以正常工作。

基于:Add a button on top of admin orders list in woocommerce