由SKU搜索WooCommerce Admin产品

时间:2017-03-10 20:53:49

标签: php wordpress woocommerce

所以我一直在寻找一种方法来整合它,而无需安装另外一个比我需要更多的插件。

让我们说我们的产品SKU的结构是提供供应商编号,然后是破折号( - ),然后是产品ID。所以我们的SKU看起来像这样469-852369(供应商产品)。供应商ID可以是1到5位数字,产品ID可以是1到10位数。我们希望能够搜索产品而无需添加短划线( - )。因此,对于469-852369,我希望能够输出469852369并显示该产品。

我知道有很多插件可以做到这一点,但我不想添加插件只是为了完成这个问题。有关如何通过PHP实现此目的的任何帮助和指导都会有所帮助。

3 个答案:

答案 0 :(得分:5)

您可以将自定义查询设置为搜索结果。正常搜索" 469852369"你可以附加" - "经过3位数后,如#34; 469-852369"然后将其传递给WordPress查询以获得结果。

function get_product_by_sku( $sku ) {

  global $wpdb;

  $sku = implode("-", str_split($sku, 3));

  $product_id = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_sku' AND meta_value='%s' LIMIT 1", $sku ) );

  if ( $product_id ) return new WC_Product( $product_id );

  // YOUR CODE

  return null;

}

希望这对你有所帮助。

感谢。

答案 1 :(得分:1)

我认为你可以用Ahmed Ginani的答案取代SQL查询,并得到你想要的东西:

SELECT post_id FROM $wpdb->postmeta WHERE (REPLACE(meta_value, '-', '')) = '%s' AND meta_key='_sku';

答案 2 :(得分:-2)

使用代码:

function get_product_by_sku( $sku ) {
  global $wpdb;
  $product_id = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_sku' AND meta_value='%s' LIMIT 1", $sku ) );
  if ( $product_id ) return new WC_Product( $product_id );
  return null;
}