Скрыть IP-адрес клиента на страницах редактирования заказа администратора WooCommerce

Я изо всех сил пытался найти в Google, как скрыть IP-адрес клиента, отображаемый на страницах редактирования заказов WooCommerce, но никакой код мне пока не помог.

По сути, я просто хочу показать метод оплаты менеджеру магазина (т. е.: посредством оплаты картой). Я хочу избавиться от любого другого текста.

Этот вопрос WooCommerce — Изменить платный текст на странице сведений о заказе в панели администратора дал мне некоторое представление о том, как удалить текст «Оплачено при» (ps: я заменил его на «»).

Но кроме этого я понятия не имел, как скрыть IP-адрес клиента.

Я попробовал следующий код, но безуспешно:

add_filter( 'update_post_metadata', 'mp1401091554', 10, 3 );

function mp1401091554( $null, $id, $key ) {
    if ( '_customer_ip_address' === $key )
        return FALSE;

    return $null;
}

🤔 А знаете ли вы, что...
JavaScript поддерживает асинхронное программирование с использованием промисов и асинхронных функций.


1
50
1

Ответ:

Решено

Вы можете использовать CSS, чтобы скрыть IP-адрес клиента, например:

add_action( 'admin_head', 'admin_edit_order_css' );
function admin_edit_order_css() {
    global $pagenow, $typenow;

    if ( ( $pagenow === 'post.php' && $typenow === 'shop_order' && isset($_GET['post']) ) 
    || ( $pagenow === 'admin.php' && isset($_GET['page']) && $_GET['page'] === 'wc-orders'
    && isset($_GET['action']) && $_GET['action'] === 'edit' && isset($_GET['id']) ) ) : ?>
    <style> .woocommerce-Order-customerIP {display:none;} </style>
    <?php endif;
}

Но он скроет только сам IP-адрес, но не подстроку «IP-адрес клиента:».

Таким образом, вы можете использовать вместо этого Javascript, чтобы удалить IP и скрыть подстроку «IP-адрес клиента:», например:

add_action( 'admin_footer', 'admin_edit_order_script' );
function admin_edit_order_script() {
    global $pagenow, $typenow;

    if ( ( $pagenow === 'post.php' && $typenow === 'shop_order' && isset($_GET['post']) ) 
    || ( $pagenow === 'admin.php' && isset($_GET['page']) && $_GET['page'] === 'wc-orders'
    && isset($_GET['action']) && $_GET['action'] === 'edit' && isset($_GET['id']) ) ) : ?>
    <script>
    jQuery('.woocommerce-Order-customerIP').remove();
    const orderNumberMeta = jQuery('.woocommerce-order-data__meta.order_number'), 
    orderNumberMetaHTML = orderNumberMeta.html();
    orderNumberMeta.html(orderNumberMetaHTML.replace('Customer IP:', ''));
    </script>
    <?php endif;
}

Код находится в файле function.php вашей дочерней темы (или в плагине). Протестировано и работает как с включенным HPOS, так и без него.

Вы получите что-то вроде: