我想为所有未登录的用户隐藏一个特定的产品。认为$post
就是那个帖子。我用了钩子:
add_action( \'wp\', \'WC_Query::remove_product_query\' ) ;
以及
remove_action( \'pre_get_posts\', \'WC_Query::pre_get_posts\' );
但它们似乎都没有起作用。
global $post;
if( get_post_type() == "product" )
{
if(is_user_logged_in()){
return;
}
add_action( \'wp\', \'WC_Query::remove_product_query\' ) ;
remove_action( \'pre_get_posts\', \'WC_Query::pre_get_posts\' );
$post->post_content = \'Hidden\';
return;
}
SO网友:Piyush Rawat
这段代码经过测试,在新的WP和WooCommerce安装上运行良好。
if ( !is_user_logged_in()) {
function exclude_product_from_users($q){
$current_user = wp_get_current_user();
$prodcuts_ids = array(648);
$q->set( \'post__not_in\', $prodcuts_ids );
}
add_action( \'woocommerce_product_query\', \'exclude_product_from_users\' );
function return_from_product_page(){
global $post;
$prodcuts_ids = array(648);
if(in_array( $post->ID , $prodcuts_ids)){
wp_redirect(home_url(\'/\'));
exit();
}
}
add_action(\'wp\', \'return_from_product_page\');
}