自定义Woocommerce管理端添加项目模式

时间:2017-06-30 15:27:52

标签: php wordpress woocommerce

大家好,我希望你能帮助我, 问题是我需要在管理员方面的新订单添加项目更好的产品查找器。因为我没有找到任何插件我以为我可以制作一个带有过滤器的模态可以取代实际的插件。 现在的问题是,我在哪里可以找到要修改的代码,最好的方法是什么,有没有我没见过的插件? 我很复杂,抱歉图像是西班牙语

enter image description here

谢谢c:

1 个答案:

答案 0 :(得分:1)

如果这与“添加新订单”页面的“添加产品”相同,则过滤器“woocommerce_json_search_found_products”将执行您想要的操作。

# modified from WC_AJAX::json_search_products()
# untested but should point you in the right direction

add_filter( 'woocommerce_json_search_found_products', function( $products ) {
    $term = wc_clean( stripslashes( $_GET['term'] ) );
    # split the term into terms
    $terms = explode( ' ', $term );

    $data_store = WC_Data_Store::load( 'product' );
    $ids = [];
    foreach ( $terms as $term ) {
        # do a search for each term and join the result
        $ids = array_merge( $ids, $data_store->search_products( $term, '', false ) );
    }
    $ids = array_unique( $ids );

    if ( ! empty( $_GET['exclude'] ) ) {
      $ids = array_diff( $ids, (array) $_GET['exclude'] );
    }

    if ( ! empty( $_GET['include'] ) ) {
      $ids = array_intersect( $ids, (array) $_GET['include'] );
    }

    if ( ! empty( $_GET['limit'] ) ) {
      $ids = array_slice( $ids, 0, absint( $_GET['limit'] ) );
    }

    $product_objects = array_filter( array_map( 'wc_get_product', $ids ), 'wc_products_array_filter_editable' );
    $products        = array();

    foreach ( $product_objects as $product_object ) {
      $products[ $product_object->get_id() ] = rawurldecode( $product_object->get_formatted_name() );
    }

    return $products;
 });