WordPress/WooCommerce:在搜索参数中添加product_variation是拉起草稿产品
WordPress/WooCommerce: Adding product_variation to the search parameters is pulling up draft products
我有一个 WooCommerce 化妆品商店,我们需要让它可以搜索变体名称,因为人们通常会寻找特定的阴影名称。我正在使用这段代码使产品变体可搜索:
add_action( 'pre_get_posts', 'search_woocommerce_product_variations' );
function search_woocommerce_product_variations( $query ) {
if( ! is_admin() && is_search() && $query->is_main_query() ) {
$query->set( 'post_type', array( 'post', 'page', 'product', 'product_variation' ) );
}
}
编辑添加:我已经尝试添加这个,搜索结果没有变化:
$query->set('post_status', array('publish'));
问题是,在搜索变体名称时,它会提取变体名称中具有该搜索词但当前设置为草稿状态的产品。我怎样才能防止这种情况发生?
告诉查询 post_status 您在找什么:
add_action( 'pre_get_posts', 'search_woocommerce_product_variations' );
function search_woocommerce_product_variations( $query ) {
if( ! is_admin() && is_search() && $query->is_main_query() ) {
$query->set( 'post_type', array( 'post', 'page', 'product', 'product_variation' ) );
$query->set('post_status', array('publish'));
}
}
<?php
$args = array(
'post_type' => 'product',
'numberposts' => -1,
);
$products = get_posts( $args );
foreach($products as $product):
$product_s = wc_get_product( $product->ID );
if ($product_s->product_type == 'variable') {
$args = array(
'post_parent' => $plan->ID,
'post_type' => 'product_variation',
'numberposts' => -1,
);
$variations = $product_s->get_available_variations();
echo '<pre>';
print_r($variations);
echo '</pre>';
}
endforeach;
?>
我有一个 WooCommerce 化妆品商店,我们需要让它可以搜索变体名称,因为人们通常会寻找特定的阴影名称。我正在使用这段代码使产品变体可搜索:
add_action( 'pre_get_posts', 'search_woocommerce_product_variations' );
function search_woocommerce_product_variations( $query ) {
if( ! is_admin() && is_search() && $query->is_main_query() ) {
$query->set( 'post_type', array( 'post', 'page', 'product', 'product_variation' ) );
}
}
编辑添加:我已经尝试添加这个,搜索结果没有变化:
$query->set('post_status', array('publish'));
问题是,在搜索变体名称时,它会提取变体名称中具有该搜索词但当前设置为草稿状态的产品。我怎样才能防止这种情况发生?
告诉查询 post_status 您在找什么:
add_action( 'pre_get_posts', 'search_woocommerce_product_variations' );
function search_woocommerce_product_variations( $query ) {
if( ! is_admin() && is_search() && $query->is_main_query() ) {
$query->set( 'post_type', array( 'post', 'page', 'product', 'product_variation' ) );
$query->set('post_status', array('publish'));
}
}
<?php
$args = array(
'post_type' => 'product',
'numberposts' => -1,
);
$products = get_posts( $args );
foreach($products as $product):
$product_s = wc_get_product( $product->ID );
if ($product_s->product_type == 'variable') {
$args = array(
'post_parent' => $plan->ID,
'post_type' => 'product_variation',
'numberposts' => -1,
);
$variations = $product_s->get_available_variations();
echo '<pre>';
print_r($variations);
echo '</pre>';
}
endforeach;
?>