Я пытаюсь полностью удалить продукт / продукты у пользователей, которые не вошли в систему, и если пользователь не имеет определенной роли (например, проверенный покупатель).
Мне удалось создать новую роль с именем Проверенный покупатель, используя приведенный ниже код;
add_role(
'verified_buyer',
__( 'Verified Buyer', 'text-domain' ),
array(
'read' => true,
'edit_posts' => false,
)
);
//This Role is same role capability as the WooCommerce Customer role
и я также добавил флажок на странице WooCommerce Add New Product, используя код ниже
function hide_product_from_unathorised_users() {
$args = array(
'id' => '_hide_from_unauthorize_users',
'label' => 'Hide Product from unauthorized users',
'desc_tip' => true,
'description' => __('Check this to hide this product from unauthorized users', 'text-domain')
);
woocommerce_wp_checkbox( $args );
}
add_action( 'woocommerce_product_options_advanced', 'hide_product_from_unathorised_users' );
// Save Fields
function product_custom_fields_save($post_id){
// Custom Product Text Field
$hide_product_unathorised_users = isset( $_POST['_hide_from_unauthorize_users'] ) ? 'yes' : 'no';
update_post_meta($post_id, '_hide_from_unauthorize_users', esc_attr( $hide_product_unathorised_users ));
}
add_action('woocommerce_process_product_meta', 'product_custom_fields_save');
Теперь, когда у меня есть эти две опции (роль пользователя и флажок, чтобы узнать, какой продукт скрыть) ... Я хочу скрыть такой продукт, если выполнены следующие условия;
ЗАКРЫТЬ ПРОДУКТ ПОЛНОСТЬЮ (даже из поисковых запросов) ЕСЛИ
1. Флажок установлен на продукте, а пользователь не авторизован
2. Флажок установлен для продукта и пользователь вошел в систему и не проверен Покупатель или администратор Роль
Как это
function hide_product_completely_conditionally() {
global $post;
$hide_product_checkbox = get_post_meta( $post->ID, '_hide_from_unauthorize_users', true )
$user = wp_get_current_user();
$authorized_user_role = in_array( 'verified_buyer', (array) $user->roles );
$admin_role = in_array( 'administrator', (array) $user->roles );
if ( ($hide_product_checkbox == 'yes' && !is_user_loggedin()) || ($hide_product_checkbox == 'yes' && is_user_loggedin() && (!$authorized_user_role || !$admin_role) ) ) {
//(...) HIDE SUCH PRODUCT COMPLETELY CODE THAT I'M NOT SURE HOW TO WRITE
}
}
Спасибо за вашу помощь заранее.