0
私は、woocommerce管理者の製品バリエーションを含むすべての製品IDを検索したいという課題に直面しています。 woocommerce adminのバリデーションIDで商品を検索するには?woocommerce管理製品検索ボックスでバリエーションIDで変数プロダクトを検索するにはどうすればよいですか?
お願いします。
ありがとうございます。
私は、woocommerce管理者の製品バリエーションを含むすべての製品IDを検索したいという課題に直面しています。 woocommerce adminのバリデーションIDで商品を検索するには?woocommerce管理製品検索ボックスでバリエーションIDで変数プロダクトを検索するにはどうすればよいですか?
お願いします。
ありがとうございます。
最後に、フィルター "posts_search"を変更して上記の機能を実装しました。
郵便番号を使用すると、ウーマン・エキスパートの管理製品検索エリアのバリエーションIDで変数の商品を検索することができます。
add_filter('posts_search', 'product_search');
function product_search($where) {
global $pagenow, $wpdb, $wp;
if ('edit.php' != $pagenow || ! is_search() || ! isset($wp->query_vars['s']) || 'product' != $wp->query_vars['post_type']) {
return $where;
}
$search_ids = array();
$terms = explode(',', $wp->query_vars['s']);
foreach ($terms as $term){
if (is_numeric($term)){
$post_type = get_post_type($term);
if($post_type == 'product_variation'){
$search_ids[] = wp_get_post_parent_id($term);
}else{
$search_ids[] = $term;
}
}
// Attempt to get a SKU
$sku_to_id = $wpdb->get_results($wpdb->prepare("SELECT ID, post_parent FROM {$wpdb->posts} LEFT JOIN {$wpdb->postmeta} ON {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id WHERE meta_key='_sku' AND meta_value LIKE %s;", '%' . $wpdb->esc_like(wc_clean($term)) . '%'));
$sku_to_id = array_merge(wp_list_pluck($sku_to_id, 'ID'), wp_list_pluck($sku_to_id, 'post_parent'));
if (sizeof($sku_to_id) > 0) {
$search_ids = array_merge($search_ids, $sku_to_id);
}
}
$search_ids = array_filter(array_unique(array_map('absint', $search_ids)));
if (sizeof($search_ids) > 0) {
$where = str_replace('AND (((', "AND (({$wpdb->posts}.ID IN (" . implode(',', $search_ids) . ")) OR ((", $where);
}
return $where;
}
「バリエーション」を持つ可変の製品があります。 "変種"とは何も意味しません。**同じ変種製品のバリエーションであるため、商品 "バリエーション" **を検索することはできません。 – LoicTheAztec
管理製品の検索ボックスに何とかIDで商品を検索する必要があります。バリエーションIDの場合は親商品が表示されます。それは、それが属する製品であることが分かります。 – Suman
これはうまくいかないと思う...表示されるのは、バリエーション(プロダクトタイプではない)を除くすべてのプロダクトタイプだけです。だから、検索はバリエーションに作用しません...しかし、私は間違っているかもしれません。あなたの質問はあまりにも漠然としており、回答を得る機会があれば、明確で詳細なもので編集する必要があります。 (「バリアント」は、woocommerceでは何も意味しません。代わりに「バリエーション」を使用します)... – LoicTheAztec