用于动态显示 WooCommerce 产品类别的嵌套简码
Nested shortcode to dynamically display WooCommerce products category
我正在尝试根据当前用户角色显示 WooCommerce 产品类别页面。
我创建了一个自定义函数 get_user_role()
来获取用户角色并添加了短代码 [user_role] 来获取它。
如果我在页面上成功使用简码 returns "administrator" 这样我就可以确认此自定义简码是否有效。
我现在无法将此短代码用作类别别名。
所以我想要实现的主要是以下内容:
[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]
You can also use all arguments like in the real shortcode.
此代码已经过测试并且可以工作。你会得到这样的东西:
相似答案:WordCommerce shortcode products list
我正在尝试根据当前用户角色显示 WooCommerce 产品类别页面。
我创建了一个自定义函数 get_user_role()
来获取用户角色并添加了短代码 [user_role] 来获取它。
如果我在页面上成功使用简码 returns "administrator" 这样我就可以确认此自定义简码是否有效。
我现在无法将此短代码用作类别别名。
所以我想要实现的主要是以下内容:
[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]
You can also use all arguments like in the real shortcode.
此代码已经过测试并且可以工作。你会得到这样的东西:
相似答案:WordCommerce shortcode products list