我在具有特定数量用户的网站上安装了woocommerce,这些用户将能够访问受密码保护的商店。
问:除少数客户外,是否可以隐藏所有用户的产品。我想创建一个函数...隐藏产品ID(来自所有),但用户ID除外:93,64,22等。
我需要帮助。提前谢谢。
答案 0 :(得分:0)
$user = get_current_user_id();
if($user == '93' && get_post_meta(get the meta value of the product which applies to password protexted)) {
show product here
} else {
dont_show
}
你可以将它挂钩到pre_get_posts hook
答案 1 :(得分:0)
您可以使用此处提供的答案:https://wordpress.stackexchange.com/questions/165691/how-to-check-if-a-user-exists-by-a-given-id
function user_id_exists($user){
global $wpdb;
$count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $wpdb->users WHERE ID = %d", $user));
if($count == 1){ return true; }else{ return false; }
}
我尝试使用此功能:您需要在content-product.php
文件夹中提取的woocommerce
中使用它,并使用li编辑该部分,如下所示:
$user_id = 1
if(user_id_exists($user_id )){
<li <?php post_class( $classes ); ?>>
<?php do_action( 'woocommerce_before_shop_loop_item' ); ?>
<a href="<?php the_permalink(); ?>">
<?php
/**
* woocommerce_before_shop_loop_item_title hook
*
* @hooked woocommerce_show_product_loop_sale_flash - 10
* @hooked woocommerce_template_loop_product_thumbnail - 10
*/
do_action( 'woocommerce_before_shop_loop_item_title' );
/**
* woocommerce_shop_loop_item_title hook
*
* @hooked woocommerce_template_loop_product_title - 10
*/
do_action( 'woocommerce_shop_loop_item_title' );
/**
* woocommerce_after_shop_loop_item_title hook
*
* @hooked woocommerce_template_loop_rating - 5
* @hooked woocommerce_template_loop_price - 10
*/
do_action( 'woocommerce_after_shop_loop_item_title' );
?>
</a>
<?php
/**
* woocommerce_after_shop_loop_item hook
*
* @hooked woocommerce_template_loop_add_to_cart - 10
*/
do_action( 'woocommerce_after_shop_loop_item' );
?>
</li>
} else {
return;
}
您可以创建用户数组并使用foreach循环对其进行过滤,然后在其中为每个用户创建if条件。