Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php WooCommerce管理员按SKU搜索产品_Php_Wordpress_Woocommerce - Fatal编程技术网

Php WooCommerce管理员按SKU搜索产品

Php WooCommerce管理员按SKU搜索产品,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,所以我一直在四处寻找一种方法,在不安装另一个插件的情况下整合这个插件 假设我们的产品SKU的结构提供了供应商编号,然后是破折号(-),然后是产品id。因此我们的SKU看起来像469-852369(供应商产品)。供应商ID可以是1到5位数字,产品ID可以是1到10位数字。我们希望能够搜索产品,而不必添加破折号(-)。因此,对于469-852369,我希望能够键入469852369,然后产品出现 我知道有很多插件可以做到这一点,但我不想仅仅为了解决这一问题而添加插件。任何关于如何通过PHP实现这一点

所以我一直在四处寻找一种方法,在不安装另一个插件的情况下整合这个插件

假设我们的产品SKU的结构提供了供应商编号,然后是破折号(-),然后是产品id。因此我们的SKU看起来像469-852369(供应商产品)。供应商ID可以是1到5位数字,产品ID可以是1到10位数字。我们希望能够搜索产品,而不必添加破折号(-)。因此,对于469-852369,我希望能够键入469852369,然后产品出现


我知道有很多插件可以做到这一点,但我不想仅仅为了解决这一问题而添加插件。任何关于如何通过PHP实现这一点的帮助和指导都会有所帮助

您可以将自定义查询设置为搜索结果。在使用“469852369”进行正常搜索时,您可以在“469-852369”等3位数字后添加“-”,然后将其传递到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;

}
希望这对你有所帮助


谢谢。

我想你可以用这个代替Ahmed Ginani答案中的SQL查询,得到你想要的:

SELECT post_id FROM $wpdb->postmeta WHERE (REPLACE(meta_value, '-', '')) = '%s' AND meta_key='_sku';
使用以下代码:

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;
}