SearchWP Documentation

Veja o guia de instalação, navegue pela Base de Conhecimento, descubra os muitos hooks do SearchWP

Pesquisar Pedidos WooCommerce

Os Pedidos do WooCommerce contêm muitas informações e, às vezes, são difíceis de pesquisar com eficácia. O SearchWP pode ser configurado para pesquisar Pedidos do WooCommerce rapidamente.

Observação: Você precisará da extensão WooCommerce Integration do SearchWP ativa para este processo.

Etapa 1: Tornar os Pedidos do WooCommerce pesquisáveis

Por padrão, o SearchWP não listará os Pedidos do WooCommerce como uma Fonte, porque esse tipo de conteúdo específico não é público por design. Os Pedidos do WooCommerce contêm informações confidenciais e cuidados extras devem ser tomados ao fazer alterações como estas!

Use os seguintes hooks para adicionar Pedidos do WooCommerce como uma Fonte do SearchWP:

All hooks should be added to your custom SearchWP Customizations Plugin.

<?php
// Add WooCommerce Orders as a SearchWP Source.
// @link https://searchwp.com/documentation/knowledge-base/search-woocommerce-orders/
add_action( 'plugins_loaded', function() {
if ( class_exists( 'WooCommerce' ) ) {
add_filter( 'searchwp\sources', function( $sources ) {
$sources[] = new \SearchWP\Sources\Post( 'shop_order' );
return $sources;
} );
add_filter( 'searchwp\post_stati\shop_order', function( $post_stati ) {
return array_merge( $post_stati, [
'wc-pending',
'wc-processing',
'wc-on-hold',
'wc-completed',
'wc-cancelled',
'wc-refunded',
'wc-failed',
] );
} );
}
} );

Etapa 2: Criar um Mecanismo suplementar para pesquisas no Admin

Em seguida, crie um Mecanismo suplementar do SearchWP para usar em pesquisas no Admin:

Configuração do motor de pedidos do WooCommerce do SearchWP

Observação: Este Mecanismo será usado para todas as pesquisas no Admin porque essa caixa de seleção foi marcada na configuração. Você pode omitir qualquer Fonte deste Mecanismo e o SearchWP pulará as pesquisas no Admin para essas Fontes, voltando ao padrão do WordPress.

Aqui estão as etapas que foram seguidas para criar este Mecanismo de pesquisa no Admin:

  1. Clique no botão Adicionar Novo na aba Mecanismos da tela de configurações do SearchWP
  2. Clique no botão Fontes & Configurações para o Mecanismo recém-criado
  3. Ative as Fontes aplicáveis para este Mecanismo (certificando-se de incluir Pedidos)
  4. Importante: Marque a caixa de seleção Mecanismo do Admin
  5. Clique no botão Salvar Mecanismos para salvar o novo Mecanismo

Pesquisar Pedidos WooCommerce

Assim que o índice processar seus Pedidos do WooCommerce existentes, eles agora serão pesquisáveis no Admin do WordPress!

Observação: Existem alguns aspectos dos Pedidos do WooCommerce que podem precisar de integração adicional:

Tornar os dados dos Itens do Pedido pesquisáveis

Se você quiser tornar os dados dos Itens do Pedido (por exemplo, números de SKU de Produto para Itens do Pedido) pesquisáveis, você pode personalizar os dados indexados para cada Pedido para incluir quaisquer dados de Itens do Pedido que desejar. Neste trecho, tornaremos o SKU, Nome do Produto, Slug do Produto, Descrição do Produto, Breve Descrição do Produto e Atributos do Produto pesquisáveis para retornar quaisquer Pedidos correspondentes:

All hooks should be added to your custom SearchWP Customizations Plugin.

<?php
// Add WooCommerce Order item data to WooCommerce Orders Search in SearchWP.
// @link https://searchwp.com/documentation/knowledge-base/search-woocommerce-orders/
add_filter( 'searchwp\entry\data', function( $data, \SearchWP\Entry $entry ) {
// The Product data keys to index for each Order item.
$data_to_index = [
'sku',
'name',
'slug',
'description',
'short_description',
'attributes',
];
if (
'post' . SEARCHWP_SEPARATOR . 'shop_order' !== $entry->get_source()->get_name()
|| ! function_exists( 'wc_get_order' )
|| ! class_exists( 'WC_Order_Item_Product' )
|| ! method_exists( 'WC_Order_Item_Product', 'get_product' )
|| ! class_exists( 'WC_Product' )
|| ! method_exists( 'WC_Product', 'get_data' )
) {
return $data;
}
$order = wc_get_order( $entry->get_id() );
$data['meta']['searchwp_wc_order_item_data'] = array_map( function ( $item ) use ( $data_to_index ) {
$product = $item->get_product();
$product_data = $product->get_data();
return array_filter( array_map( function( $item_key, $item_value ) use ( $data_to_index ) {
return in_array( $item_key, $data_to_index ) ? $item_value : '';
}, array_keys( $product_data ), array_values( $product_data ) ) );
}, $order->get_items() );
// We need to prevent WooCommerce from excluding the order comments from our query.
remove_filter( 'comments_clauses', array( 'WC_Comments', 'exclude_order_comments' ) );
$order_comments = get_comments( array(
'post_id' => $order->get_id(),
'orderby' => 'comment_ID',
'order' => 'DESC',
'status' => 'any',
'type' => 'order_note',
) );
add_filter( 'comments_clauses', array( 'WC_Comments', 'exclude_order_comments' ) );
$notes = wp_list_pluck( $order_comments, 'comment_content' );
$data['meta']['searchwp_wc_order_notes'] = $notes;
return $data;
}, 20, 2 );
// Prevent WooCommerce from limiting the results to post IDs.
add_filter( 'searchwp\native\args', function( $args, $query ) {
if (
is_admin()
&& is_search()
&& isset( $_REQUEST['post_type'] )
&& 'shop_order' == $_REQUEST['post_type']
) {
$args['post__in'] = [];
}
return $args;
}, 10, 2 );

Observação: Como adicionamos 'Qualquer Chave de Meta' ao Mecanismo do Admin que criamos, agora poderemos pesquisar também por dados de Itens do Pedido.

Integrar com Filtros de Pedidos

Por padrão, o SearchWP não se integra a nenhum filtro do Admin que tenha sido configurado. Podemos criar suporte para os filtros de Data do Pedido e Cliente do WooCommerce com este hook:

All hooks should be added to your custom SearchWP Customizations Plugin.

<?php
// @link https://searchwp.com/documentation/knowledge-base/search-woocommerce-orders/
// Add support for WooCommerce Admin filters when searching Orders with SearchWP.
add_filter( 'searchwp\query\mods', function( $mods, $query ) {
global $wpdb;
if ( isset( $_GET['_customer_user'] ) && ! empty( $_GET['_customer_user'] ) ) {
$mod = new \SearchWP\Mod( \SearchWP\Utils::get_post_type_source_name( 'shop_order' ) );
$mod->set_local_table( $wpdb->postmeta );
$mod->on( 'post_id', [ 'column' => 'id' ] );
$mod->on( 'meta_key', [ 'value' => '_customer_user' ] );
$mod->raw_where_sql( function( $runtime_mod ) use ( $wpdb ) {
return $wpdb->prepare( "{$runtime_mod->get_local_table_alias()}.meta_value = %d", absint( $_GET['_customer_user'] ) );
} );
$mods[] = $mod;
}
if ( isset( $_GET['m'] ) && ! empty( $_GET['m'] ) ) {
$mod = new \SearchWP\Mod( \SearchWP\Utils::get_post_type_source_name( 'shop_order' ) );
$mod->raw_where_sql( function( $runtime_mod ) use ( $wpdb ) {
return $wpdb->prepare( "DATE_FORMAT( {$runtime_mod->get_local_table_alias()}.post_date, \"%Y%m\" ) = %d", absint( $_GET['m'] ) );
} );
$mods[] = $mod;
}
return $mods;
}, 99, 2 );

Com esse hook implementado, o SearchWP aplicará os limites definidos pelos filtros de Data do Pedido e Cliente ao pesquisar Pedidos do WooCommerce.

Tornar os Números de Pedido pesquisáveis

Os números de pedido são IDs de Postagem que não são indexados por padrão. Podemos dizer ao SearchWP para indexar os Números de Pedido do WooCommerce junto com os outros dados do Pedido com um trecho como este:

All hooks should be added to your custom SearchWP Customizations Plugin.

<?php
// Add WooCommerce Order Numbers to WooCommerce Orders.
// @link https://searchwp.com/documentation/knowledge-base/search-woocommerce-orders/
add_filter( 'searchwp\entry\data', function( $data, \SearchWP\Entry $entry ) {
$my_extra_meta_key = 'searchwp_order_number';
$my_extra_meta = $entry->get_id() . ' order-' . $entry->get_id() . ' o-' . $entry->get_id();
$data['meta'][ $my_extra_meta_key ] = $my_extra_meta;
return $data;
}, 20, 2 );

Observação: Como adicionamos 'Qualquer Chave de Meta' ao Mecanismo do Admin que criamos, agora poderemos pesquisar também por número de pedido.

Tornar as Notas de Pedido pesquisáveis

Se você se lembra, adicionamos 'Comentários' ao Admin Engine acima. O WooCommerce usa Comentários para Notas de Pedido, mas há uma restrição adicional imposta pelo WooCommerce devido à natureza privada das Notas de Pedido. Podemos remover essa restrição para SearchWP com um trecho como este:

All hooks should be added to your custom SearchWP Customizations Plugin.

<?php
// Make WooCommerce Order Notes searchable by SearchWP.
// @link https://searchwp.com/documentation/knowledge-base/search-woocommerce-orders/
add_action( 'searchwp\source\post\attributes\comments', function() {
if ( did_action( 'searchwp\indexer\batch' ) ) {
remove_filter( 'comments_clauses', [ 'WC_Comments', 'exclude_order_comments' ] );
}
} );
// Add Order Notes to SearchWP's Comments Source.
add_filter( 'searchwp\source\comment\db_where', function( $db_where, $source ) {
$db_where[0]['value'] = [ 'comment', 'order_note', ];
$db_where[0]['compare'] = 'IN';
return $db_where;
}, 10, 2 );

Depois que este trecho for adicionado, você precisará reconstruir seu índice clicando no botão Reconstruir Índice na aba Motores da tela de configurações do SearchWP, e quando o índice for reconstruído, suas Notas de Pedido do WooCommerce também estarão pesquisáveis.

Crie uma Experiência de Pesquisa WordPress Melhor Hoje

Nunca mais perca visitantes para resultados de pesquisa inúteis. O SearchWP torna a criação de sua própria pesquisa inteligente do WordPress rápida e fácil.

Get SearchWP Now
Ícone de Múltiplos Mecanismos de Busca