您可以通过在后端产品页面上的发布元框的“目录可见性”选项中选择“隐藏”,从商店页面和产品搜索中隐藏WooCommerce产品。
这很好,它从商店和产品搜索结果中隐藏了广告中的产品,但如果从常规WordPress搜索中搜索,该产品仍然可见!
Woocommerce目录中隐藏产品
目录可见性设置为隐藏的产品
WordPress搜索结果中隐藏产品
如果您使用动态URL参数搜索您的站点,https://mydomain.com/?s=Hidden+Woo+Product您隐藏的产品将显示在搜索结果中。
add_action('pre_get_posts','wpse_187444_search_query_pre');
/**
*Hide Catalog Products Only In Search
* link https://wordpress.stackexchange.com/questions/283393/hidden-woocommerce-products-still-showing-up-in-search-results/283397
* since 1.7.0
*/
function wpse_187444_search_query_pre($query){
if($query->is_search()&&$query->is_main_query()){
$tax_query=$query->get('tax_query',array());
$tax_query[]=array(
'taxonomy'=>'product_visibility',
'field'=>'name',
'terms'=>'exclude-from-catalog',
'operator'=>'NOT IN',
);
$query->set('tax_query',$tax_query);
}
}
因此,在上面的代码片段(链接值中的原始来源)中,在主搜索查询上运行了一个pre_get_posts过滤器,并且任何设置了目录隐藏的产品都不会返回到搜索结果中,在您的主题的functions.php文件中中添加代码。
禁止搜索引擎收录产品
另一个问题是隐藏的产品仍然被谷歌、百度等收录,并通过搜索或站点地图可见。您有多种选择来解决此问题。
您可以在每页的SEO插件中手动将每个产品设置为noindex/nofollow
如果您有许多产品要隐藏,您可以为这些产品分配一个类别并运行过滤器以将这些产品排除在索引之外。