Wordpress 隐藏&x27;缺货';商业产品
在“产品”和“库存”下,我检查了以下设置: “从目录中隐藏缺货项目” 现在,所有已售完的产品都隐藏在存档/类别视图中。到目前为止还不错 问题是隐藏(缺货)的产品是按每页计算的。因此,如果有3种产品在第一页上售罄,那么只有库存中的产品才会显示出来(6) 看起来这些“隐藏”的产品仍然可以搜索,并且可以通过不同的小部件看到Wordpress 隐藏&x27;缺货';商业产品,wordpress,plugins,woocommerce,Wordpress,Plugins,Woocommerce,在“产品”和“库存”下,我检查了以下设置: “从目录中隐藏缺货项目” 现在,所有已售完的产品都隐藏在存档/类别视图中。到目前为止还不错 问题是隐藏(缺货)的产品是按每页计算的。因此,如果有3种产品在第一页上售罄,那么只有库存中的产品才会显示出来(6) 看起来这些“隐藏”的产品仍然可以搜索,并且可以通过不同的小部件看到 有没有办法解决这个问题?我的意思是真正隐藏缺货的产品。或者我需要手动删除它们吗?您可以尝试将其添加到主题的functions.php文件中: add_action( 'pre_ge
有没有办法解决这个问题?我的意思是真正隐藏缺货的产品。或者我需要手动删除它们吗?您可以尝试将其添加到主题的functions.php文件中:
add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
function custom_pre_get_posts_query( $q ) {
if ( ! $q->is_main_query() ) return;
if ( ! $q->is_post_type_archive() ) return;
if ( ! is_admin() ) {
$q->set( 'meta_query', array(array(
'key' => '_stock_status',
'value' => 'outofstock',
'compare' => 'NOT IN'
)));
}
remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
}
add_action('woocommerce_product_query', 'show_only_instock_products');
function show_only_instock_products($query) {
$meta_query = $query->get( 'meta_query' );
$meta_query[] = array(
'key' => '_stock_status',
'compare' => '=',
'value' => 'instock'
);
$query->set( 'meta_query', $meta_query );
}
我修改了此URL中的代码:
再次保存在此处,以防网站脱机:(此代码不包括某些产品类别)
self注意:始终从开发人员处读取变更日志 在这里找到了答案: 如果类别的产品数量显示过高或 数量太少,升级到WooCommerce 2.1后有一个简单的问题 变通办法 转到您的电子商务>系统状态中的“工具”选项卡 WordPress管理小组。这里您首先使用“重新计票条款” 按钮,然后使用“清除瞬态”按钮。这将 强制系统在下次分类时重新统计所有产品 已加载
更新:还要记住,将库存数量更改为0是不够的。您还必须将“库存状态”设置为“缺货”。如果没有,即使没有库存,产品也会被计入商店。只有在您使用官方woocommerce短代码的情况下,但如果您使用visual composer创建页面并使用自定义插件或第三方插件或短代码,第一步是为从循环中运行的查询创建一个函数,然后将其修改为如下内容
$params = array(
'posts_per_page' => 5,
'post_type' => array('product', 'product_variation'),
'meta_query' => array(
array(
'key' => '_stock_status',
'value' => 'instock'
)
)
);
你必须确定的最重要的部分是
'meta_query' => array(
array(
'key' => '_stock_status',
'value' => 'instock'
)
)
我找到了一个更简单的方法,如果有人还在woocommerce中寻找隐藏的缺货产品,请遵循这些简单的步骤,而不编辑html
隐藏缺货产品的步骤
您可以将PHP代码片段放在子主题函数.PHP文件的底部
add_action('woocommerce_product_query', 'custom_woocommerce_product_query');
function custom_woocommerce_product_query($q)
{
if (!is_admin())
{
$oos_query = new WP_Query(['meta_query' => [['key' => '_stock_status', 'value' => 'outofstock', 'compare' => '=', ], ], 'post_type' => 'product', 'posts_per_page' => - 1, 'fields' => 'ids', ]);
$exclude_ids = $oos_query->posts;
$q->set('post__not_in', $exclude_ids);
}
}
我知道这个问题很久以前就被问过了,但是问题的解决方案现在不同了,所以我为那些和我有同样问题的人发了这篇文章。在WooCommerce 5.3.0上测试 解决方案: 首先,确保Woocomece>设置中的“隐藏缺货产品”复选框未选中,然后将此PHP代码添加到子主题函数.PHP文件中:
add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
function custom_pre_get_posts_query( $q ) {
if ( ! $q->is_main_query() ) return;
if ( ! $q->is_post_type_archive() ) return;
if ( ! is_admin() ) {
$q->set( 'meta_query', array(array(
'key' => '_stock_status',
'value' => 'outofstock',
'compare' => 'NOT IN'
)));
}
remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
}
add_action('woocommerce_product_query', 'show_only_instock_products');
function show_only_instock_products($query) {
$meta_query = $query->get( 'meta_query' );
$meta_query[] = array(
'key' => '_stock_status',
'compare' => '=',
'value' => 'instock'
);
$query->set( 'meta_query', $meta_query );
}
我的商店与批发商整合在一起,库存水平每小时更新一次,有数千种产品。谢谢你的回复,但不幸的是没有起作用。缺货的产品仍然可以搜索,并在分页中计数。由于开发人员没有将此添加到插件中,我想不幸的是,没有任何快速修复方法。伟大的解决方案在四年后仍然有效。需要考虑以下几点:(1)不检查查询/发布类型,因此将应用于自定义发布类型。(2) 覆盖已应用的任何元查询。当然,这两者都很容易修复,而且取决于您自己的情况@super9我更新了我的答案,在我第一次设置并将我的产品导入WooCommerce时,我也忽略了一些东西。不是一个真正的编程解决方案,但在导入时容易被忽略。Klaudia。。。很抱歉,该选择将仅从存档(目录)中隐藏产品。搜索将返回存档中看不到的缺货项目,即使设置确定了要隐藏缺货项目的首选项。对我来说很有用。非常感谢。如果您解释一下并添加ComentAdded,您的答案会更有帮助。将代码片段添加到functions.php,但搜索结果中会不断显示缺货产品