php 从主页隐藏WooCommerce产品与待定状态

2mbi3lxu  于 5个月前  发布在  PHP
关注(0)|答案(1)|浏览(47)

我有一个WooCommerce website和我使用WCFM多供应商插件.当任何供应商提交一个产品,它会在等待审查的状态,但该产品显示在主页上,当点击该产品时,它显示404作为产品状态待定,用户没有权限这样做.我已经尝试了很多不同的事情,但我找不到解决方案.
我试过:

function exclude_pending_products($query) { 
    // Check if it's the main query and if it's on the front-end 
    if (is_admin() || !$query->is_main_query()) { 
        return;
    }

    //Check if it's a product query 
    if ($query->is_post_type_archive('product') || $query->is_tax('product_cat') || $query->is_tax('product_tag')) { 
        //Exclude pending products
        $query->set('post_status', array('publish'));
    } 
} 
add_action('pre_get_posts', 'exclude_pending_products');

字符串
我尝试了很多方法,但没有一种有效。

siotufzp

siotufzp1#

也许你的主题主页使用[products]简码来显示产品,例如在WooCommerce StoreFront主题中.在这种情况下,你应该尝试以下操作:

// For products shortcode (Home page?)
add_filter( 'woocommerce_shortcode_products_query', 'shortcode_product_query_excl_pending_status', 50, 3 );
function shortcode_product_query_excl_pending_status( $query_args, $atts, $loop_name ){
    $query_args['post_status'] = 'publish';
    return $query_args;
}

// For WooCommerce Archive pages
add_action( 'woocommerce_product_query', 'product_query_excl_pending_status', 50, 2 );
function product_query_excl_pending_status( $q, $query ) { 
    if ( ! is_admin() && $q->is_main_query() && $q->is_archive() ) { 
        $q->set('post_status', 'publish');
    }
}

字符串
代码放在你的子主题的functions.php文件中(或者插件中)。它可以工作。
相关:隐藏在Woocommerce主页上的短代码的销售产品

相关问题