首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >替换特定WooCommerce管理订单列表列中的现有内容

替换特定WooCommerce管理订单列表列中的现有内容
EN

WordPress Development用户
提问于 2019-05-18 19:55:19
回答 1查看 1.6K关注 0票数 2

如何替换或完全删除管理中Woocommerce Orders列表中的列?

我知道,可以取消选中“屏幕选项”中的“发货地址”列,并添加另一个自定义列,并将其命名为“发货地址”。但理想上,我只想有一个“发货地址”栏的选项,只是能够改变什么是在该栏。

我已经尝试过先删除“发货地址”一栏,但也没有成功:

代码语言:javascript
运行
复制
function new_orders_columns($columns)
{
    unset($columns['shippging_address']);

    return $columns;
}

function after_woo()
{
    add_filter('manage_shop_order_posts_columns', 'new_orders_columns', 10, 1);
}

add_action('plugins_loaded', 'after_woo');

它就是不能被移除。我试图更改优先级和init/加载钩子。但什么都不管用。

这里有什么帮助吗?

EN

回答 1

WordPress Development用户

回答已采纳

发布于 2019-05-18 21:34:55

要使用的正确的过滤器挂钩是manage_edit-shop_order_columns

( 1)删除 shipping_address列:

代码语言:javascript
运行
复制
add_filter( 'manage_edit-shop_order_columns', 'remove_specific_orders_column' );
function remove_specific_orders_column( $columns ){
    unset( $columns['shipping_address'] );

    return $new_columns;
}

代码位于活动子主题(或活动主题)的functions.php文件中。测试和工作。

2)替换shipping_address列的内容

下面是一个示例,它将替换Admin列表中的列“发货地址”内容:

代码语言:javascript
运行
复制
add_filter( 'manage_edit-shop_order_columns', 'customizing_orders_columns' );
function customizing_orders_columns( $columns ){
    $new_columns = [];

    foreach ( $columns as $key => $column ) {
        if( $key === 'shipping_address' ) {
            $new_columns['shipping_addr_repl'] = $column;
        } else {
            $new_columns[$key] = $column;
        }
    }
    return $new_columns;
}
代码语言:javascript
运行
复制
add_action( 'manage_shop_order_posts_custom_column', 'set_custom_shipping_address_content_replacement' );
function set_custom_shipping_address_content_replacement( $column ) {
    global $the_order, $post;

    if ( 'shipping_addr_repl' === $column ) {
        // YOUR REPLACEMENT CODE (Fake example below)
        echo $the_order->get_shipping_city();
    }
}

代码位于活动子主题(或活动主题)的functions.php文件中。测试和工作。

该列的原始显示内容代码是:

代码语言:javascript
运行
复制
$address = $the_order->get_formatted_shipping_address();

if ( $address ) {
    echo '' . esc_html( preg_replace( '##i', ', ', $address ) ) . '';
    if ( $the_order->get_shipping_method() ) {
        /* translators: %s: shipping method */
        echo '' . sprintf( __( 'via %s', 'woocommerce' ), esc_html( $the_order->get_shipping_method() ) ) . ''; // WPCS: XSS ok.
    }
} else {
    echo '–';
}
票数 3
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/338204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档