Я создаю эту базу знаний в WordPress с помощью Elementor. Чтобы ограничить контент, я использую плагин Content Control от Code Atlantic. Я также использую плагин «Редактор ролей пользователя» для создания ролей пользователей для каждого бренда.
Я создал собственный тип сообщений, который позволяет сотрудникам компании писать статьи в базе знаний. Эти пользовательские типы сообщений основаны на категориях.
Теперь все работает нормально, когда кто-то попадает на домашнюю страницу. Всякий раз, когда они нажимают на определенный бренд, они не зарегистрированы, потому что контент становится недоступным.
У меня проблема со страницей результатов поиска. Я создал страницу результатов поиска с помощью Elementor. Там есть виджет цикла, который отображает соответствующие статьи базы знаний на основе поискового запроса. Однако я не хочу, чтобы статьи о брендах отображались на этой странице результатов, если вошедший в систему пользователь не зарегистрирован на определенном бренде. Если клиент А подписался на бренд А, он должен видеть только статьи бренда А, а не бренда Б.
В файле функций PHP.file я вставил этот код:
Код: Выделить всё
add_filter('pre_get_posts', 'custom_search_query');
function custom_search_query($query) {
if (is_search() && $query->is_main_query()) {
$user = wp_get_current_user();
$roles = (array)$user->roles;
$allowed_roles = array('cenzaa_klanten', 'mayee_klanten');
$search_categories = array();
// Define the allowed categories for each role
if (in_array('cenzaa_klanten', $roles)) {
$search_categories = array(
'cenzaa-behandelformulieren',
'cenzaa-marketing-en-promotiemateriaal',
'cenzaa-prijslijsten',
'cenzaa-producthandleidingen',
'cenzaa-trainingen'
);
} elseif (in_array('mayee_klanten', $roles)) {
$search_categories = array(
'mayee-behandelformulieren',
'mayee-prijslijsten',
'mayee-trainingen'
);
}
// Set the post type and category parameters for the query
$query->set('post_type', 'artikel');
$query->set('rubriek_name', implode(',', $search_categories)); // Allow only selected categories
}
return $query;
}
'cenzaa_klanten' и 'mayee_klanten' — это роли пользователей, которые я создал. Cenzaa — один из брендов, а Mayee — один из брендов. Плагин Content Control от Code Atlantic используется для установки правил для ограниченного контента.
Различные категории начинаются с «cenza-..» и с «mayee-..».
В ACF я изменил слово «категория» на «rubriek» (голландский перевод категории выглядит лучше в URL-адресе).
Подробнее здесь: https://stackoverflow.com/questions/774 ... strictions
Мобильная версия