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

时间:2019-05-18 作者:Peter Westerlund

如何在admin中替换或完全删除Woocommerce订单列表中的列?

我知道可以从“屏幕选项”中取消选中“发货地址”列,然后添加另一个自定义列并将其命名为“发货地址”。但理想的情况是,我只希望有一个“发货地址”列选项,并且能够更改该列中的内容。

我试图先删除“发货地址”列,但也没有成功:

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\');
它就是不会被移除。我试图更改优先级和初始化/加载的挂钩。但什么都不管用。

有什么帮助吗?

1 个回复
最合适的回答,由SO网友:LoicTheAztec 整理而成

要使用的正确滤清器挂钩为manage_edit-shop_order_columns.

1) To remove shipping_address 列:

add_filter( \'manage_edit-shop_order_columns\', \'remove_specific_orders_column\' );
function remove_specific_orders_column( $columns ){
    unset( $columns[\'shipping_address\'] );

    return $new_columns;
}
代码进入函数。活动子主题(或活动主题)的php文件。已测试并正常工作。

<小时>2) Replace the content 属于shipping_address 列:

下面的示例将替换管理订单列表中的“发货地址”列内容:

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;
}
<小时>
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();
    }
}
代码进入函数。活动子主题(或活动主题)的php文件。已测试并正常工作。

enter image description here


此列最初显示的内容代码为:

$address = $the_order->get_formatted_shipping_address();

if ( $address ) {
    echo \'<a target="_blank" href="\' . esc_url( $the_order->get_shipping_address_map_url() ) . \'">\' . esc_html( preg_replace( \'#<br\\s*/?>#i\', \', \', $address ) ) . \'</a>\';
    if ( $the_order->get_shipping_method() ) {
        /* translators: %s: shipping method */
        echo \'<span class="description">\' . sprintf( __( \'via %s\', \'woocommerce\' ), esc_html( $the_order->get_shipping_method() ) ) . \'</span>\'; // WPCS: XSS ok.
    }
} else {
    echo \'&ndash;\';
}

相关推荐

编辑子主题的“header.php”,但似乎没有更改文件

所以我登录FTP并导航到/wp-content/themes/MyChildTheme/ 并编辑了header.php 文件我保存了文件并上传了它,我可以确认文件已更改,因为如果我通过cPanel或其他计算机进行检查,我可以看到新代码。然而如果我转到WP Admin并导航到Appearance > Editor > MyChildTheme > header.php 如下所示:文件显示为未编辑。。。我看不到我添加的代码。我已经清除了LiteSpeed缓存,但它仍然不会显示已编辑的代码。我