Вложенный короткий код для динамического отображения категории продуктов woocommerce

Я пытаюсь отобразить страницу категории товаров woocommerce на основе текущей роли пользователя. Я создал пользовательскую функцию get_user_role() чтобы получить роль пользователя и добавил короткий код [user_role], чтобы получить это. Если я использую короткий код на странице, он успешно возвращает «administrator», поэтому я могу подтвердить, что этот пользовательский shortcode работает.

У меня теперь есть проблема с использованием этого короткого кода как категории slug.

Так что я пытаюсь добиться, в основном, следующее:

 [product_category category='[user_role]'] 

Как я могу заставить его работать?

    Может быть, вы делаете это неправильно, или вам может понадобиться создать дополнительный короткий код.

    Таким образом, код должен выглядеть примерно так:

     if( !function_exists('prod_category') ) { function prod_category( $atts ) { // Shortcode Attributes $atts = shortcode_atts( array( 'per_page' => '12', 'columns' => '4', 'orderby' => 'title', 'order' => 'asc', 'category' => "" ), $atts, 'prod_category' ); ## User role: ## // 1. logged in user if( is_user_logged_in() ){ $current_user = wp_get_current_user(); $current_user_roles = $current_user->roles; $user_role = $current_user_roles[0]; // The user role } else // Not logged in { // HERE set the default user role (or any product category). $user_role = 'visitor'; } $per_page = $atts['per_page']; $columns = $atts['columns']; $orderby = $atts['orderby']; $order = $atts['order']; $category = $user_role; // Here you can replace by your function get_user_role(); $output = do_shortcode ( "[product_category per_page=$per_page columns=$columns orderby=$orderby order=$order category=$category]" ); return $output; } add_shortcode( 'prod_category', 'prod_category' ); } 

    Код идет в файле function.php вашей активной дочерней темы (или темы), а также в любом файле плагина.

    ПРОСТОЕ ИСПОЛЬЗОВАНИЕ (пример) :

     [prod_category] 

    Вы также можете использовать все аргументы, как в реальном коротком коде.

    Этот код проверен и работает. Вы получите что-то вроде этого:

    введите описание изображения здесь


    Аналогичный ответ: список продуктов Shortcode в WordCommerce