如何替换或完全删除管理中Woocommerce Orders列表中的列?
我知道,可以取消选中“屏幕选项”中的“发货地址”列,并添加另一个自定义列,并将其命名为“发货地址”。但理想上,我只想有一个“发货地址”栏的选项,只是能够改变什么是在该栏。
我已经尝试过先删除“发货地址”一栏,但也没有成功:
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/加载钩子。但什么都不管用。
这里有什么帮助吗?
发布于 2019-05-18 21:34:55
要使用的正确的过滤器挂钩是manage_edit-shop_order_columns。
( 1)删除 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;
}代码位于活动子主题(或活动主题)的functions.php文件中。测试和工作。
2)替换shipping_address列的内容:
下面是一个示例,它将替换Admin列表中的列“发货地址”内容:
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();
}
}代码位于活动子主题(或活动主题)的functions.php文件中。测试和工作。

该列的原始显示内容代码是:
$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 '–';
}https://wordpress.stackexchange.com/questions/338204
复制相似问题