【问题标题】:woocommerce admin product search multiple skuswoocommerce admin 产品搜索多个 sku
【发布时间】:2020-05-13 16:52:41
【问题描述】:

所以,我为一家销售公司工作,该公司刚刚使用带有 Woocommerce 插件的 Wordpress 建立了一个网上商店。

我希望能够处理产品选项卡上的管理员搜索,其中包含我们产品的所有信息。 据我了解,正常搜索会对您放入框中的术语进行 mySQL 查询。我在functions.php中有一个代码sn-p,允许它也搜索元字段_sku。所以当我输入一个 sku 号说... 7026 它将提取标题、描述或 sku 中包含 7026 的任何项目。

但是,我希望能够输入说.... 7026 4567 3883 进入搜索框并查询数据库以查找与这些数字中的任何一个匹配的任何产品(OR 关系搜索而不是 AND) 现在,如果我在其中输入,我什么也得不到,因为它会搜索标题、说明或 sku 中包含 7026 和 4567 和 3883 的任何产品,但我的目标是让搜索至少返回我们的 3 个产品sku 为 7026、4567 和 3883 的数据库

任何帮助将不胜感激。我试图让代码 sn-p 工作了好几天,但没有运气。

【问题讨论】:

  • 您应该在问题中添加您尝试过的代码,即使它不起作用。
  • 我看看能不能把那个贴出来,很好

标签: php wordpress search woocommerce code-snippets


【解决方案1】:

在这篇文章中找到了答案: mutli sku admin search

帖子中的代码来自 Bjorn,非常感谢。

代码如下:

/**
 * Use multiple sku's to find WOO products in wp-admin
 * NOTE: Use '|' as a sku delimiter in your search query. Example: '1234|1235|1236'
**/
function woo_multiple_sku_search( $query_vars ) {

global $typenow;
global $wpdb;
global $pagenow;

if ( 'product' === $typenow && isset( $_GET['s'] ) && 'edit.php' === $pagenow ) {
    $search_term = esc_sql( sanitize_text_field( $_GET['s'] ) );

    if (strpos($search_term, '|') == false) return $query_vars;

    $skus = explode('|',$search_term);

    $meta_query = array(
        'relation' => 'OR'
    );
    if(is_array($skus) && $skus) {
        foreach($skus as $sku) {
            $meta_query[] = array(
                'key' => '_sku',
                'value' => $sku,
                'compare' => '='
            );
        }
    }

    $args = array(
        'posts_per_page'  => -1,
        'post_type'       => 'product',
        'meta_query'      => $meta_query
    );
    $posts = get_posts( $args );

    if ( ! $posts ) return $query_vars;

    foreach($posts as $post){
      $query_vars['post__in'][] = $post->ID;
    }
}

return $query_vars;
}
add_filter( 'request', 'woo_multiple_sku_search', 20 );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-04
    相关资源
    最近更新 更多