Где-то год назад я писал о том, что начал тестировать интернет-магазин на базе WordPress, ну а точнее – на основе плагина WooCommerce (ну, и остальных к нему, типа добавляющих бланки заказа). И вот теперь, спустя год, могу сделать какие-то выводы. Как я и подозревал изначально, опыт оказался не очень удачным. Да, WordPress замечательно подходит для сайта какой-нибудь парикмахерской, образовательного учреждения, ну или любой другой сферы услуг, в крайнем случае – для продажи каких-либо нематериальных товаров. Но как только нам надо продавать реальные, физические вещи – увы и ах. Да, и синхронизация с 1С есть, но тоже с помощью дополнительных плагинов (до их тестирования руки не дошли), и онлайн-кассу подключить тоже можно – но блин, настройка всего этого, да и остальных вещей требует лезть непосредственно в код или вордпресса, или соответствующих плагинов. Не получится просто нажать кнопочку “подключить”, чтобы все заработало хорошо и сразу.
Ну и плюс к тому – к сожалению, он заточен исключительно под американскую методологию, т.е. доставка почтой, а не курьерами – это опять подключение плагинов типа Delivery Date (их обзор – это отдельная тема, также как и с инвойсами) и плагинов, разбивающих адрес на отдельные поля. В общем, в большинстве случаев, чтобы настроить все работать хорошо – все равно придется самостоятельно лезть в код, или обращаться к помощи программистов. И тогда теряется вся изначальная прелесть этого решения, т.е. возиться с ним придется не меньше, чем с каким-нибудь OpenCart (там, в общем-то тот же геморрой, решаемый покупкой доп-плагинов). Поэтому, скорее всего, в следующий раз я выберу для тестирования другую платформу CMS. Ну, а для тех, кто уже плотно сидит на WooCommerce, возьму на себя смелость дать несколько советов, как улучшить и ввести полезный функционал, не поставляемый нам из коробки. И сегодня речь пойдет, о том, как вывести в списке заказов в админке дополнительные поля, например телефон клиента. Поехали.
Итак, понятно, что для того, чтобы заходить внутрь заказа для того, чтобы просто позвонить клиенту, и что-нибудь у него уточнить – не очень удобно. Удобнее, когда телефон есть просто в списке заказов (кстати введенный клиентом с помощью WooCommerce Checkout Manager). Так вот, всё на самом деле просто. Берем файл functions.php из нашей темы. Ему в конец дописываем следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
add_filter( 'manage_edit-shop_order_columns', 'shop_order_columns' ); function shop_order_columns( $columns ){ $new_columns = (is_array($columns)) ? $columns : array(); $new_columns['phone'] = 'Phone'; return $new_columns; } add_action( 'manage_shop_order_posts_custom_column', 'shop_order_posts_custom_column' ); function shop_order_posts_custom_column( $column ){ global $post, $the_order; if ( empty( $the_order ) || $the_order->get_id() != $post->ID ) { $the_order = wc_get_order( $post->ID ); } $billing_address = $the_order->get_address(); if ( $column == 'phone' ) { echo ( isset( $billing_address['phone'] ) ? $billing_address['phone'] : ''); } } |
И видим, что у нас теперь есть столбец с телефонным номером. Если нам не нравится его местоположение, то код можно использовать такой:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
add_filter( 'manage_edit-shop_order_columns', 'shop_order_columns' ); function shop_order_columns($columns){ $columns = (is_array($columns)) ? $columns : array(); $phone = array( 'phone' => 'Phone' ); $position = 3; $new_columns = array_slice( $columns, 0, $position, true ) + $phone; return array_merge( $new_columns, $columns ); } add_action( 'manage_shop_order_posts_custom_column', 'shop_order_posts_custom_column' ); function shop_order_posts_custom_column( $column ){ global $post, $the_order; if ( empty( $the_order ) || $the_order->get_id() != $post->ID ) { $the_order = wc_get_order( $post->ID ); } $billing_address = $the_order->get_address(); if ( $column == 'phone' ) { echo ( isset( $billing_address['phone'] ) ? $billing_address['phone'] : ''); } } |
В этом случае $position как раз отвечает за номер колонки, в котором появится телефонный номер. Другие поля можно вывести аналогично.
К сожалению, ни отсортировать по нему, ни отфильтровать не получится. Можно, конечно, найти и придумать, как это сделать и для поля с номером телефона; ну или в конце концов купить за деньги плагин, который это позволяет – но затраченные усилия того не стоят – проще подобрать другую CMS, в которой это уже доступно из коробки. Честно говоря, у меня остались столь негативные впечатления от Woocommerce/WordPress в качестве движка для интернет-магазина, что даже не хочется описывать другие хитрости, а снести его нафиг, и попробовать сделать магазин на чем-нибудь другом.
Добавить комментарий