Результаты поиска Wordpress на основе ограничений роли пользователяPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Результаты поиска Wordpress на основе ограничений роли пользователя

Сообщение Anonymous »

Я создаю базу знаний для компании, у которой есть несколько брендов b2b. Для каждого отдельного бренда клиент должен заключить договор с компанией. Клиенты смогут войти в базу знаний и просмотреть контент брендов, на которые они подписаны.
Я создаю эту базу знаний в 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»