Продукты Woocommerce, редактируемые их автором для конкретной роли пользователя - PullRequest
0 голосов
/ 26 февраля 2019

У меня на сайте WordPress зарегистрированы разные пользователи с разными ролями.Помимо остальных пользователей, я хочу разрешить рекламодателям (пользователям с ролью рекламодателя - созданная мной специальная роль рекламодателя) размещать свои собственные продукты на моем сайте, а также управлять ими.Но они должны быть ограничены только для управления (создания, редактирования и удаления) своих собственных продуктов, а не других.

До сих пор я пробовал следующий код, но он кажется недействительным.Я уверен, что смогу достичь своей цели с помощью действия pre_get_posts, и следующая функция может помочь мне, но мне нужна помощь в решении проблем с этим кодом.Я не уверен насчет типа продукции.

Вот код, с помощью которого я пытаюсь достичь своей цели:

function show_specific_advertiser_products( $query ) {
    $current_user = wp_get_current_user();
    if ( is_admin() && in_array ($query->get( 'post_type'), array( 'woocommerce_products' ) ) && !user_can( $current_user, 'administrator' ) ) {

        $query->set( 'author__in', $current_user->ID );
    }
}
add_action( 'pre_get_posts', 'show_specific_advertiser_products' );

Любая помощь будет высоко оценена.

1 Ответ

0 голосов
/ 26 февраля 2019

Ошибка в вашем коде исходит от post_type… для продуктов woocommerce это просто product.Вам придется заменить administrator на свою пользовательскую роль.

Так что попробуйте следующее:

add_action( 'pre_get_posts', 'show_specific_advertiser_products' );
function show_specific_advertiser_products( $query ) {
    $user = wp_get_current_user();
    if ( is_admin() && $query->get( 'post_type') === 'product' && in_array('administrator', $user->roles) ) {
        $query->set( 'author', $user->ID );
    }
}

Код входит в файл function.php вашей активной дочерней темы (или активнойтема).Должно работать.

...